我有这个awk命令来取代" proto"在file.txt中,在replacement.txt中找到字符串,
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"
有人可以给我一个提示吗?
答案 0 :(得分: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
答案 1 :(得分: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