【问题标题】:append distinct count for each line in a file in unix为unix文件中的每一行附加不同的计数
【发布时间】:2019-09-30 20:23:29
【问题描述】:

我有一个带有字段分隔符 #~# 的大文件和类似

的记录
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#103  
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#115
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#117
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#103 -> repeat of 1st
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#118
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#129
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#130
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#132
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#133

如何处理此文件以记录出现次数如下

bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#103#~#2 
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#115#~#1
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#117#~#1
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#118#~#1
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#129#~#1
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#130#~#1
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#132#~#1
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#133#~#1

谢谢。

【问题讨论】:

标签: linux shell unix line-count


【解决方案1】:

你可以在下面使用:

sort filename |uniq -c|awk '{print $2,$3"#~#"$1}'

输出:

bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#103#~#2
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#115#~#1
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#117#~#1
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#118#~#1
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#129#~#1
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#130#~#1
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#132#~#1
bus#~#337007270#~#461692988#~#2019-09-24 01:06:33#~#133#~#1

【讨论】:

  • awk 也在分离时间戳值 2019-09-24 01:06:33
  • @D.Aquar 编辑了它。立即尝试。
  • @D.Aquar 不客气。如果您觉得它有帮助,请接受它作为有效答案,以便它帮助他人。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 2016-04-11
  • 1970-01-01
相关资源
最近更新 更多