Это работает с GNU awk (Linux )и BSD awk (Mac ).
Вы можете игнорировать пустые строки. В этом случае вы можете использовать awk 'NF' file.txt
, а затем направить вывод с помощью одного из других методов, описанных на этой странице.
Вы также можете сделать все это за один проход через awk:
awk 'NF { a=b ; b=$0 } END { print a }' file.txt
NF
NF
— количество полей в строке; значения больше 0 рассматриваются как «истинные». { a=b ; b=$0 }
b
, а предыдущую не-пустую строку как a
. END { print a }
a
(предпоследней не-пустой строки ). Если вы не хотите пропускать пустые строки, просто удалитеNF
:
awk '{ a=b ; b=$0 } END { print a }' file.txt
Удостоверьтесь, что сценарий bash имеет шебанг #!/bin/bash вверху, а затем добавьте выход 0 в самый конец вашего сценария, чтобы другая программа знала, что она завершилась успешно.
#!/bin/bash
for f in *.flac
do
/usr/local/bin/ffmpeg -i "$f" -aq 1 "${f%flac}mp3"
done
exit 0
Давай попробуем по-другому
#!/bin/bash
find -name "*.cfg" -type f -exec /usr/local/bin/ffmpeg -i "$f" -aq 1 "${f%flac}mp3" {} \;
done
exit 0
РЕШЕНО!! Я изменил цитирование в скрипте Perl:
@sysCmd=(`/usr/local/bin/ffmpeg`, '-', "$t", ' -aq 1', '${t%flac}mp3');
system (@sysCmd);
Теперь я могу работать над остальной частью Perl-скрипта. Большое спасибо всем, кто внес свои идеи.