遗憾的是,这需要通过 sed 进行,据我所知,反向匹配不起作用。
我有一个不正确的字符串,我需要在其中插入一个空格,这个不正确的字符串可以采用以下格式:
>=5.0.0 <= 7.0.0
>5.0.0 <= 7.0.0
=5.0.0 <= 7.0.0
我需要在第一个数字之前插入一个空格,并且只有在不存在空格的情况下(我们有数百个正确的字符串,所以双空格会破坏它们)。
期望的输出是
>= 5.0.0 <= 7.0.0
> 5.0.0 <= 7.0.0
= 5.0.0 <= 7.0.0
我尝试过分组,但还不太明白:
echo $testString |sed 's/\(\S\)\w/\1 &/'
>= =5.0.0 < 7.0.0
最佳答案
如果您对 awk
没问题,请尝试使用所示示例进行编写和测试。
awk '!/^[>]?[=]? [0-9]/{sub(/[>]?[=]?/,"&"OFS)} 1' Input_file
或
awk '/^[>]?[=]?[0-9]/{sub(/[>]?[=]?/,"&"OFS)} 1' Input_file
OR 与 sed
使用相同的正则表达式:
sed -E '/^[>]?[=]?[0-9]/s/^[>]?[=]?/& /' Input_file
关于regex - sed,在第一个数字之前插入空格,但前提是不存在空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63707693/