小编J.C*_*ter的帖子

用逗号空格替换空格的正则表达式,除了行尾

我试图隐藏这个输入文件的内容:

NP_418770.2: 257-296 344-415 503-543 556-592 642-707
YP_026226.4: 741-779 811-890 896-979 1043-1077
Run Code Online (Sandbox Code Playgroud)

对此:

NP_418770.2: 257-296, 344-415, 503-543, 556-592, 642-707
YP_026226.4: 741-779, 811-890, 896-979, 1043-1077
Run Code Online (Sandbox Code Playgroud)

即,用逗号和空格替换空格(不包括换行符)

为此,我尝试过:

perl -pi.bak -e "s/[^\S\n]+/, /g" input.txt
Run Code Online (Sandbox Code Playgroud)

但它给出了:

NP_418770.2:, 257-296, 344-415, 503-543, 556-592, 642-707
YP_026226.4:, 741-779, 811-890, 896-979, 1043-1077
Run Code Online (Sandbox Code Playgroud)

如何在不写另一个正则表达式的情况下停止出现在":"之后出现的额外逗号(我想要":"和单个空格)?

谢谢

regex perl

8
推荐指数
1
解决办法
1160
查看次数

perl one-liner只保留所需的线条

我有一个像这样的文本文件(input.txt):

NP_414685.4: 15-26, 131-138, 441-465
NP_418580.2: 493-500
NP_418780.2: 36-48, 44-66
NP_418345.2:
NP_418473.3: 1-19, 567-1093
NP_418398.2:
Run Code Online (Sandbox Code Playgroud)

我想要一个perl单行程序,只保留文件中的那些行,其中":"后跟数字范围(这意味着,这里包含"NP_418345.2:"和"NP_418398.2:"的行被删除).为此,我尝试过:

perl  -ni -e "print unless /: \d/" -pi.bak input.txt del input.txt.bak
Run Code Online (Sandbox Code Playgroud)

但它显示与输入文件完全相同的输出.我能在这里匹配的确切模式是什么?谢谢

perl

1
推荐指数
1
解决办法
71
查看次数

标签 统计

perl ×2

regex ×1