如果 bash 中两个字符并排,如何替换它们?

问题描述 投票:0回答:3

我希望仅替换字符串中并排的 2 个字符。

我现在有输出

hu1.cqf51:qu-2/2
hu2.cqf55:qe-2/2
hu2.cqf41:qe-2/2

第一行不正确,因为它有“qu”而不是“qe” 我希望用 qe 替换 qu,而不替换字符串中的任何其他“q”或“e”

所需输出

hu1.cqf51:qe-2/2
hu2.cqf55:qe-2/2
hu2.cqf41:qe-2/2

我尝试过的事情

sed -r 's/[qu]+/qe/g'
sed -e 's//qe/g'
sed 's/\S*\(qu\)\S*//g'

即使考虑只是尝试单独删除整个单词(如果它与下面的命令匹配),但是它删除了其中包含 q 或 u 的所有内容。

sed -e 's/[^ ]*qu[^ ]*//g'

谢谢您的帮助!!

bash shell sed tr
3个回答
0
投票

你可以试试这个吗?

sed -e 's/qu/qe/' your_file

0
投票

我建议

sed 's/:qu-/:qe-/'

但如果这是标准格式,则可能有标准方法。


0
投票

与 tr 不同,sed 会自动匹配整个模式,无需任何选项。这适用于您的示例:

sed 's/qu/qe/g'
© www.soinside.com 2019 - 2024. All rights reserved.