原始数据(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,它仍然显示双倍结果
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
where you can” 。uniq