在 unix 中为文件中的每一行附加不同的计数

append distinct count for each line in a file in unix

我有一个带有字段分隔符 #~# 和类似

的记录的大文件
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

谢谢。

您可以使用以下:

sort filename |uniq -c|awk '{print ,"#~#"}'

输出:

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