Мне нужно вставить строку с определенным текстом во второй строке (таким образом перемещая другие строки вниз в файле) сотен файлов в каталоге. Какие-нибудь быстрые советы по Unix, как это можно сделать?
sed -i -e '2iYour line here' /dir/*
Обратите внимание, что семантика sed -i зависит от разновидности Unix, поэтому проверьте man sed. Это написано для аромата GNU.
sed -i
man sed
perl -pi -we'print "extra line\n" if $. == 3; close ARGV if eof' files
close(ARGV) необходим для перезапуска счетчика строки $. в начале каждого файла; по умолчанию он считает строки в файлах.
close(ARGV)
$.
это AWK использование, а не sed,
AWK
sed
for i in $(<list_of_files) do awk '{if (FNR!=2) print $0; else { print "new line"; print $0}}' $i > ${i}.tmp; mv ${i}.tmp $i; done
ls | xargs --replace=foo perl -i -ne 'print; print "second line text\n" unless $x++;' foo