Как вставить строку в определенную строку в нескольких файлах в Unix? - PullRequest
6 голосов
/ 05 августа 2009

Мне нужно вставить строку с определенным текстом во второй строке (таким образом перемещая другие строки вниз в файле) сотен файлов в каталоге. Какие-нибудь быстрые советы по Unix, как это можно сделать?

Ответы [ 4 ]

13 голосов
/ 05 августа 2009
sed -i -e '2iYour line here' /dir/*

Обратите внимание, что семантика sed -i зависит от разновидности Unix, поэтому проверьте man sed. Это написано для аромата GNU.

2 голосов
/ 06 августа 2009
perl -pi -we'print "extra line\n" if $. == 3; close ARGV if eof' files

close(ARGV) необходим для перезапуска счетчика строки $. в начале каждого файла; по умолчанию он считает строки в файлах.

1 голос
/ 05 августа 2009

это 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
0 голосов
/ 05 августа 2009
ls | xargs --replace=foo perl -i -ne 'print; print "second line text\n" unless $x++;' foo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...