我的文本文件中有几个字符串有这种情况:
Brisbane, Queensland, Australia|BNE
我知道如何使用 SED 命令,将任何字符替换为另一个字符。这次我想用管道替换字符逗号空格,只是为了第一个匹配不同时影响国家名称。
我需要将其转换为类似的内容:
Brisbane|Queensland, Australia|BNE
如您所见,仅替换了第一个彗差空间,而没有替换第二个,并且我保留了国家/地区名称“澳大利亚昆士兰”的完整状态。有人可以帮助我实现这一目标,谢谢。
这是我的文件示例:
Brisbane, Queensland, Australia|BNE
Bristol, United Kingdom|BRS
Bristol, VA|TRI
Brive-La-Gaillarde, France - Laroche|BVE
Brno, Czech Republic - Bus service|ZDN
Brno, Czech Republic - Turany|BRQ
如果这样做:sed 's/,/|/' file.txt 不起作用。
输出应该是这样的:
Brisbane|Queensland, Australia|BNE
最佳答案
根本不要使用g
选项。您的 sed
命令应如下所示:
sed 's/, /|/'
默认情况下,s
命令将仅替换模式缓冲区中第一次出现的字符串 - 除非您传递 g
选项。
关于regex - Sed 仅删除第一次出现的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28640228/