从文件linux中提取计数

时间:2018-12-11 11:09:00

标签: linux

我有一个像这样的文本文件

22  16050213    0|0:403 1|0:1
22  16050607    0|0:400 0|1:2   1|0:2
22  16050739    0|0:403 1|0:1
22  16050783    0|0:404
22  16050840    0|0:391 0|1:9   1|0:4
22  16050847    0|0:402 1|0:2
22  16050922    0|0:404
22  16050984    0|0:404
22  16051075    0|0:404

0|0:403表示0|0的出现次数为4031|0:1表示1|0的出现次数为1,依此类推。我想删除“ 0 | 0”等,仅具有计数并用0填充空白,如下所示:

Screen Shot

请帮助我如何在Linux中做到这一点

预先感谢

2 个答案:

答案 0 :(得分:0)

您可以使用以下sed

sed -E "s/([0-9]\|[0-9]:)//g" myfile
  • -E启用扩展的正则表达式(需要分组)

  • "s/a/b/g"将a替换为b

  • ([0-9]\|[0-9]:)正则表达式匹配任意数字+转义的| +任何数字+ :

如果0 | 0结构中的数字大于9,则可以重用here中的一些正则表达式

答案 1 :(得分:0)

使用Perl一个衬纸

/tmp> cat adhira.txt
22 16050213 0|0:403 1|0:1
22 16050607 0|0:400 0|1:2 1|0:2
22 16050739 0|0:403 1|0:1
22 16050783 0|0:404
22 16050840 0|0:391 0|1:9 1|0:4
22 16050847 0|0:402 1|0:2
22 16050922 0|0:404
22 16050984 0|0:404
22 16051075 0|0:404
/tmp> perl -ne ' s/\d+\|\d+://g; print '  adhira.txt
22 16050213 403 1
22 16050607 400 2 2
22 16050739 403 1
22 16050783 404
22 16050840 391 9 4
22 16050847 402 2
22 16050922 404
22 16050984 404
22 16051075 404
/tmp>