2011-03-01 2 views
4

Я использовал команду awk для поиска определенной строки в файле и хотел бы добавить ее во второй файл. Может ли кто-нибудь помочь мне в этом отношении?Подготовить текст в файле

+1

"Append" означает установка после. Вы не можете «добавить» что-то к началу чего-то другого. Для этого есть слово: «[Prepend] (http://dictionary.reference.com/browse/prepend)». – meagar

ответ

11

Короткий ответ, что вы не можете. Вам понадобится временный файл.

echo "Prepended Line" > tmpfile && cat origfile >> tmpfile && mv tmpfile origfile 

Edit:

sed -i 's/\(line you want\)/Prefix \1/g' origfile 
+0

Это добавляет текст как первая строка, а предыдущая первая строка - вторая строка, но я хочу сделать ее одной строкой. – Shweta

+0

Это немного проще. Ред. – Daenyth

+3

+1 Также: 'sed -i '/ line вы хотите/s/^/Префикс/g' origfile' или' sed -i '1s/^/Префикс/g' origfile' (последний основан на самом OP ответ) –

0

Я сделал бы cat(1) строку в файл-заглушку, cat второй файл после него, а затем перезаписывал второй файл с помощью манекена. Посмотрите на команду sponge(1), которая позволяет вам делать «естественные» (но неверные) awk ... | cat - second-file > second-file

+0

Я хочу добавить новую строку в существующую первую строку во втором файле – Shweta

0
awk '{if(NR==1){print "text" $0}else{print }}' O/Pfile temp 
mv temp O/Pfile 
+1

Короче: 'awk 'NR == 1 {print" text "$ 0}' O/Pfile> temp; mv temp O/Pfile' –

0

Различные способы предварять строку:

(echo 'line to prepend';cat file)|sponge file 
sed -i '1iline to prepend' file # GNU 
sed -i '' $'1i\\\nline to prepend\n' file # BSD 
printf %s\\n 0a 'line to prepend' . w|ed -s file 
perl -pi -e 'print"line to prepend\n"if$.==1' file 

Различные способы PREPEND файла:

cat file_to_prepend file|sponge file 
{ rm file;cat file_to_prepend ->file; }<file 
sed -i '1{h;s/.*/cat file_to_prepend/ep;g}' file # GNU 
printf %s\\n '0r file_to_prepend' w|ed -s file 
sed -i -e 1rfile_to_prepend -e '1{h;d}' -e '2{x;G}' file 
Смежные вопросы