ファイルに重複エントリを追加する

ファイルに重複エントリを追加する

次のファイルがあります。

20001 
17001
17001
53001
90001 
90001
90001

重複したエントリがある場合は1を追加して$ 1を変更しようとしているので、出力は次のようになります。

20001 
17001
17002
53001
90001 
90002
90003

ベストアンサー1

awk '{$1+=seen[$1]++} 1' file

印刷する前に、現在の値$ 1に事後増加したハッシュ値を追加します。

上記のコードは、値が互いに近いときに繰り返される数値を生成します。たとえば、シーケンス2,2,3 - 出力は2,3,3です。 2、3、4はループを使用して達成できます。

awk '{while (c[$1]) {$1 += c[$1] += c[$1+c[$1]]} c[$1]++} 1'

配列は、最初の例cのように増加する$1のオフセットを格納します。seenその固有値のオフセットだけ $1 を増やすのではなく、以前に見られなかった新しい $1 に達するまで、次の値のオフセットだけ増加します。

おすすめ記事