regex - sed,在第一个数字之前插入空格,但前提是不存在空格

标签 regex string awk sed whitespace

遗憾的是,这需要通过 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/

相关文章:

regex - 正则表达式仅在字符串以目标结尾时匹配

php - 使用 PHP 读取文本文件并显示特定字符​​串后的所有文本

bash - 查找少于 2000 行的文本文件并删除它们

string - 从分隔的拆分字符串中删除所有子字符串匹配的高效/安全 shell 脚本?

linux - 使用 awk 分割数据但缺少列名

c# - 不匹配时正则表达式灾难性回溯

javascript - 删除所有出现的新行和制表符

javascript - 在 javascript 中获得映射和过滤器的好处的最优雅的方法是减少数组并更改其中的变量

java - String Substring 故意删除字符 0

javascript - 在数组中查找多个正则表达式