我有一个文件(File.txt),其中包含10行,可能包含某个位置的重复模式(14-17)
fsdf sfkljkl4565
fjjf lmlkfdm1235
fkljfgdfgdfg6583
eretjioijolj6933
ioj ijijsfoi4565
dgodiiopkpok6933
fsj opkjfiej4565
ihfzejijjijf4565
dfsdkfjlfeff1235
dijdijojijdz4565
Desired Output正在计算包含模式的行:
#occurences pattern
5 4565
2 1235
1 6583
2 6933
我试图过滤文件
cat File.txt | cut -c14-17 | sort -n -K1,1-1,3 >> File_Filtered.txt
我需要你的帮助来添加第一列(#occurences)
答案 0 :(得分:3)
要计算重复次数,请使用uniq -c
。因此,请尝试:
$ cut -c13-17 File.txt | sort -n | uniq -c | sort -nr
5 4565
2 6933
2 1235
1 6583
以上是使用Linux和GNU实用程序测试的。 (根据您的示例代码判断,您可能正在使用不同的工具。)
以下内容包括标题,并使用column -t
确保一切顺利排列:
$ { echo '#occurences pattern'; cut -c13-17 File.txt | sort -n | uniq -c | sort -nr; } | column -t
#occurences pattern
5 4565
2 6933
2 1235
1 6583
答案 1 :(得分:2)
$ awk '{cnt[substr($0,13)]++} END{for (i in cnt) print cnt[i], i}' file
2 6933
1 6583
5 4565
2 1235