我的文件包含这样的行:
123.45 234.56 A foo
bar boo
作为bash shell脚本的一部分,我想替换一个后面的空格 用另一个字符串编号(XYZ,让我们说)。我能做到这一点 替换所有空格(不好)
sed 's/ /XYZ/g' foo.txt
或者我可以做到这一点,取代正确的空间,但也摆脱了 最后一位数(也没有好处)
perl -pe 's/\d /XYZ/g' foo.txt
我怎样才能达到我之后的效果?
答案 0 :(得分:1)
根据您的尝试判断,您需要在数字后面替换单个空格。
使用sed
的以下表达式就足够了:
sed 's/\([0-9]\) /\1XYZ/g'
请参阅online demo。
\([0-9]\)
是捕获组匹配数字并将其存储在内存缓冲区中,空间只是匹配。替换模式包含存储在组1缓冲区内的值的backreference,因此数字不会丢失,但会在结果中恢复。
请注意,如果您需要在使用XYZ
的数字后替换所有后续空格,则可以使用
sed 's/\([0-9]\) */\1XYZ/g'
或
sed 's/\([0-9]\) \+/\1XYZ/g'