在文件中添加文本

时间:2011-03-01 05:26:17

标签: linux shell

我已经使用awk命令在文件中查找特定行,并希望将其添加到第二个文件中。有人可以在这方面帮助我吗?

4 个答案:

答案 0 :(得分:11)

简短的回答是,你不能。你需要一个临时文件。

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

编辑:

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

答案 1 :(得分:0)

我将cat(1)行放入虚拟文件,cat后面的第二个文件,然后用虚拟文件覆盖第二个文件。查看sponge(1)命令,该命令可让您执行“自然”(但不正确)awk ... | cat - second-file > second-file

答案 2 :(得分:0)

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

答案 3 :(得分: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

预先添加文件的不同方法:

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