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に増加したことを確認しました。これには理由がありますか?
元の行数を維持する方法はありますか?
答え1
いつでも
(FNR in a) && gsub(/\<Source Term\>/,"& Target Term")
計算結果がゼロではなく、つまり FNR
が含まれていて置換がa
1つ以上の部分文字列を置き換えると、デフォルトのジョブがあるため現在の行が出力されます{ print }
。
それから
1
すべての場合に現在の行が出力されるようにします(同じ基本操作に依存します)。
これは、部分文字列が置き換えられた行が2回出力されることを意味します。
gsub
呼び出しをブロックに入れると、次のことを防ぐことができます。
FNR in a { gsub(/\<Source Term\>/,"& Target Term") }