如何使用sed仅替换文件中的特定空格?

我在一个文件中有这个内容,我想用管道符号 ( |)替换某些位置的空格。我为此使用了sed,但它正在替换字符串中的所有空格。但我不想替换第 3 个和第 4 个字符串的空间。

如何实现这一目标?

输入:

test test test test

我的尝试:

sed -e 's/ /|/g file.txt

预期输出:

test|test|test test

实际输出:

test|test|test|test

回答

如果原始输入不包含任何管道字符,你可以这样做

sed -e 's/ /|/g' -e 's/|/ /3' file

保留第三个空格。否则请参阅其他答案。


回答

sed 's/ /
/3;y/n / |/'

由于换行符不能出现在 sed 模式空间中,您可以将第三个空格更改为换行符,然后将所有换行符和空格更改为空格和管道。

GNU sed 可以n在替换文本中使用:

sed 's/ /n/3;y/n / |/'


以上是如何使用sed仅替换文件中的特定空格?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>