【问题标题】:Sort duplicates by column按列对重复项进行排序
【发布时间】:2019-11-13 07:54:10
【问题描述】:

请考虑以下示例:

两列数据:

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] 序列与第一列制表符分开。

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

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

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

没有成功。恐怕我遗漏了一些明显的东西,但即使通过咨询其他相关questions 关于此事我仍然无法弄清楚。

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

【问题讨论】:

标签: bash sorting awk sed


【解决方案1】:

使用 GNU 排序和 bash:

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

输出:

ti piace o no la apple p181026 07348

【讨论】:

  • 它似乎工作得很好,谢谢。现在我清楚了我是如何弄乱标志的。
【解决方案2】:

由于您的分隔符从示例中不清楚,所以我将使用您提到的p[0-9]\s[0-9] 正则表达式,请您尝试以下操作。

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

【讨论】:

  • 文件以制表符分隔。
  • 感谢您的有趣方法!
  • @Worice,我打算采用简单的方法 :) 但似乎在粘贴您的示例选项卡时不存在,所以我想按照您使用正则表达式的第二个提示,干杯:)
猜你喜欢
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 2010-10-26
  • 1970-01-01
相关资源
最近更新 更多