Отвечать на вопрос более точно:
#!/usr/bin/perl
use List::MoreUtils qw(firstidx lastidx); # you may have to install this from CPAN
use autodie;
use File::Copy;
my $f = '/etc/pam.d/system-auth';
open my $fh, '<', $f;
my @lines = <$fh>;
close $fh;
# find the first and last "auth" lines:
my $first = firstidx {/^account\b/} @lines;
my $last = lastidx {/^account\b/} @lines;
# remove
my $removed = splice @lines, $last, 1;
# insert
splice @lines, $first+1, 0, $removed;
# backup first
copy $f, "$f.bak";
open my $fh, '>', $f;
print $fh join('', @lines);
close $fh;
Использование sox / play
play file.wav tempo 2 ##to play 2 times faster
play file.wav tempo 0.5 ## "" slower
Я использую команду ffplay (, сестру ffmpeg ). Существует два способа изменить скорость воспроизведения :, темп и высоту тона. Первый вставляет или пропускает кадры (, это звучит как «глюки» в музыке ), но сохраняет тон звука без изменений; последний делает игру более плавной, но влияет на высоту звука.
Ниже приведен пример регулировки темпа:
# 20% increase, atrim — start to play from 120-th second of the file
$ ffplay -af "atempo=1.2,atrim=120" foo.mp3
Ниже приведен пример регулировки высоты тона(foo.mp3
со скоростью 44000):
# 54000/44000 ~+24% pitch up
$ ffplay -af "asetrate=54000" foo.mp3
ffplay — очень мощный инструмент; подробнее см. на справочной странице .