重複した番号でシリアル番号を生成する方法

重複した番号でシリアル番号を生成する方法

以下のようにパイプで区切られたテキストファイルがあります。

user     |amount|dept|flag
AAAAAAAAA|100.00|SALES|OK
BBBBBBBBB|250.00|ACCOUNT|OK
CCCCCCCCC|200.00|MARKETING|OK
DDDDDDDDD|175.00|ADMIN|OK
AAAAAAAAA|150.00|SALES|OK
BBBBBBBBB|200.00|ACCOUNT|OK

最初の列に基づいてシリアル番号をソートしたいと思います。 〜のように

user     |amount|repeatation|dept|flag
AAAAAAAAA|100.00|1          |SALES|OK
AAAAAAAAA|100.00|2          |SALES|OK
BBBBBBBBB|250.00|1          |ACCOUNT|OK
BBBBBBBBB|250.00|2          |ACCOUNT|OK
CCCCCCCCC|200.00|1          |MARKETING|OK
DDDDDDDDD|175.00|1          |ADMIN|OK

私は多くのファイルを自動増やすためにシリアル番号を生成しましたが、++slそれはまったくわかりません。

ベストアンサー1

努力する

awk -F\| '{$3 = NR==1?"repetation":++T[$1] FS $3; }1' OFS=\| file
user     |amount|repetation|flag
AAAAAAAAA|100.00|1|SALES|OK
BBBBBBBBB|250.00|1|ACCOUNT|OK
CCCCCCCCC|200.00|1|MARKETING|OK
DDDDDDDDD|175.00|1|ADMIN|OK
AAAAAAAAA|150.00|2|SALES|OK
BBBBBBBBB|200.00|2|ACCOUNT|OK

「条件付き演算子」を使用して、ヘッダー(NR = = 1)に「繰り返し」を追加するか、3番目のフィールドの前に実際のカウンタを追加します。書式設定および/または順序付けは読者の役割です。

おすすめ記事