元のデータ(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