2015-01-11 53 views
0

我有這個awk命令在replacement.txt出現的字符串替換file.txt的「原」的occurrance,如何將awk的輸出重定向到文件?

awk 'FNR==NR{a[++i]=$0; next} /proto/{sub(/proto/, a[++j])} 1' replacement.txt file.txt 

它完美,但原始文件不會被修改。我用>>重定向到文件,但輸出不重定向

awk 'FNR==NR{a[++i]=$0; next} /proto/{sub(/proto/, a[++j])} 1' replacement.txt file.txt >> "file.txt" 

任何人可以給我一個提示?

回答

2

她是你如何做到這一點awk

awk 'some program' file > tmp && mv tmp file 

您的數據:

awk 'FNR==NR{a[++i]=$0; next} /proto/{sub(/proto/, a[++j])} 1' replacement.txt file.txt > tmp && mv tmp file.txt 
+0

謝謝1000次,它的效果非常好! – KianStar

1

隨着GAWK> 4.1:

gawk -i inplace 'FNR==NR{a[++i]=$0; next} /proto/{sub(/proto/, a[++j])} 1' replacement.txt file.txt 

如果你不具備這個功能,使用臨時文件名,然後mv temp file.txt

+1

這需要'gnu awk> = 4.1' – Jotne