我有以下数据格式:
123456786|data1
123456787|data2
123456788|data3
第一列是main_id。我需要从txt文件中删除所有重复的行,但省略main_id号。我怎么能这样做?
通常我使用这样的AWK脚本,但它找不到双行而没有省略:
awk '!x[$0]++' $2 > "$filename"_no_doublets.txt #remove doublets
感谢您的帮助。
答案 0 :(得分:4)
如果您有更多列,则此行应该:
awk '{a=$0;sub(/[^|]*\|/,"",a)}!x[a]++' file
示例:
123456786|data1
12345676|data1
123456787|data2|foo
203948787|data2|foo
123456788|data3
kent$ awk '{a=$0;sub(/[^|]*\|/,"",a)}!x[a]++' f
123456786|data1
123456787|data2|foo
123456788|data3
答案 1 :(得分:3)
您可以使用:
awk -F'|' '!x[$2]++'
这将仅根据|
<强>更新强>
awk '{line=$0; sub(/^[^|]+\|/, "", line)} !found[line]++'
答案 2 :(得分:1)
awk '{key=$0; sub(/[^|]+/,"",key)} !seen[key]++' file