我有一个像这样的文本文件
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
的出现次数为403
,1|0:1
表示1|0
的出现次数为1
,依此类推。我想删除“ 0 | 0”等,仅具有计数并用0填充空白,如下所示:
请帮助我如何在Linux中做到这一点
预先感谢
答案 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>