运行我的 AWK 脚本后
awk -i inplace '(NR==FNR){a[$1];next}
(FNR in a) && gsub(/\<Source Term\>/,"& Target Term")
1
' <(shuf -n 198058 -i 1-$(wc -l < file)) file
在我file
用命令检查之后
wc -l file
我注意到我的行数file
从 40058 增加到 44156。这是有原因的吗?
有什么办法可以保持原来的行数吗?
每当
计算结果为非零,即
FNR
在a
并且替换替换了至少一个子字符串,输出当前行,因为默认操作是{ print }
。然后
导致在所有情况下都输出当前行(依赖于相同的默认操作)。
这意味着子字符串被替换的行被输出两次。
将
gsub
调用放在块中将避免这种情况: