我正在尝试替换两个字母数字字符之间的空格并提出这个:
sed -i -e '/^device/ s/[0-9a-zA-Z]\s[0-9a-zA-Z]/g' file.txt
file.txt如下所示:
device : Nxx2k PNP@0.6
device : Pdot3 ICB@2.5
等。我想将冒号右侧的字符串之间的空格替换为下划线_
device : Nxx2k_PNP@0.6
device : Pdot3_ICB@2.5
此命令用下划线替换空格和两个周围的字符。我怎样才能让空间被重新定位?谢谢
答案 0 :(得分:0)
您可以使用捕获组来保留空间周围的字母数字字符:
sed -i -e '/^device/ s/\([0-9a-zA-Z]\) \([0-9a-zA-Z]\)/\1_\2/' file.txt
我使用了空格而不是\s
因为你写了替换“空格”,
而不是“空白”。
此外,\s
的所有版本都不支持sed
,因此它不可移植(不适用于BSD sed)。
最后,我删除了g
标志,因为在您的示例中没有必要。
如果在您的实际用例中,您想要在一行上替换多个空格,
当然你应该把它加回来。