按列对重复项进行排序

时间:2019-07-02 16:03:53

标签: bash sorting awk sed

请考虑以下示例:

两列数据:

ti piace o no la apple p181026 07348
ti piace o no la apple p181026 07349
ti piace o no la apple p181026 07345

p[0-9]\s[0-9]序列与第一列 tab 分开的地方。

我只想根据第一列(行的字母部分)删除重复项。我尝试过:

sort  -u -t$'\t' -k1 -nr inputfile > out

sort -t$'\t' -k1 -nr inputfile | uniq > out 

没有成功。恐怕我缺少明显的东西,但是即使就此事咨询其他相关的questions,我仍然无法弄清楚。

提前感谢您与我分享您的经验。

2 个答案:

答案 0 :(得分:1)

使用GNU排序和bash:

sort -t $'\t' -k 1,1 -u file

输出:

ti piace o no la apple  p181026 07348

答案 1 :(得分:0)

由于样本中的分隔符不清楚,因此我要使用您提到的p[0-9]\s[0-9]正则表达式,请您试一下。

awk 'match($0,/p[0-9]+ +[0-9]+]*/){a=substr($0,1,RSTART-1)} !array[a]++' Input_file