AWK以降の行数が増加しました。

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

行数がfile40058から44156に増加したことを確認しました。これには理由がありますか?

元の行数を維持する方法はありますか?

答え1

いつでも

(FNR in a) && gsub(/\<Source Term\>/,"& Target Term")

計算結果がゼロではなく、つまり FNRが含まれていて置換がa1つ以上の部分文字列を置き換えると、デフォルトのジョブがあるため現在の行が出力されます{ print }

それから

1

すべての場合に現在の行が出力されるようにします(同じ基本操作に依存します)。

これは、部分文字列が置き換えられた行が2回出力されることを意味します。

gsub呼び出しをブロックに入れると、次のことを防ぐことができます。

FNR in a { gsub(/\<Source Term\>/,"& Target Term") }

関連情報