Linux uniq:他のコメントを無視してリストをuniqする方法

Linux uniq:他のコメントを無視してリストをuniqする方法

元のデータ(abc.csv):

8|AAAAA_001|0|
8|AAAAA_002|0|
8|AAAAA_003|0|
8|AAAAA_004|0|
8|AAAAA_005|0|AAAAA_005
8|AAAAA_006|0|
9|BBBBB_001|0|
9|BBBBB_002|0|
9|BBBBB_003|0|BBBBB_003
9|BBBBB_004|0|
9|BBBBB_005|0|
9|BBBBB_901|0|
10|CCCCC_001|0|
10|CCCCC_002|0|
10|CCCCC_003|0|
10|CCCCC_004|0|

予想される結果:

8|AAAAA|0|AAAAA
9|BBBBB|0|BBBBB
10|CCCCC|0

どんなアイデアがありますか?ありがとう

次の操作を行いましたが、データの内容が$ 3の場合、結果はまだ2倍になります。

cat abc.csv | awk 'BEGIN{FS="|";OFS="|"}
                   {print $1,substr($2,1,5),$3,substr($4,1,5)}' |
  sort -t "|" -k 2 | uniq > abc_final.csv

答え1

GNUを仮定すると、sort次のようになります。

< abc.csv awk -F '|' -v OFS='|' '
  {print $1, substr($2, 1, 5), $3, substr($4, 1, 5)}' |
  sort -t '|' -k 2,2 -k4,4r | sort -t '|' -muk2,2

つまり、sort -mu行の一部に基づいて「uniqできる場所」の代わりに使用してください。uniq

関連情報