Bash
在 AWK 之後,行數增加了
執行我的 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 in a) && gsub(/\<Source Term\>/,"& Target Term")
計算結果為非零,即
FNR
ina
並且替換替換了至少一個子字元串,輸出目前行,因為預設操作是{ print }
.然後
1
導致在所有情況下都輸出目前行(依賴於相同的預設操作)。
這意味著子字元串被替換的行被輸出兩次。
將
gsub
呼叫放在塊中將避免這種情況:FNR in a { gsub(/\<Source Term\>/,"& Target Term") }