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