用于多次替换的Linux Sed命令

用于多次替换的Linux Sed命令

我需要帮助 我还需要原始文件名以及替换文件名 我的文件是:

bmb/eng/case.bmb

输出应该是这样的:

bmb/case.bmb 
bmx/eng/case.bmx

我在这里使用的命令是

$ echo bmb/eng/case.bmb | sed -E 's/.*/& &/;:a;s/([^ ]* [^\n]*)(bm)b/\1\2x/;ta;s~/~&eng&~2'
bmb/eng/eng/case.bmb bmx/eng/case.bmx

我得到的输出:

bmb/eng/eng/case.bmb bmx/eng/case.bmx

答案1

使用该-e选项运行多个 sed 表达式。全局替换BB小轮车, s/bmb/bmx/g.要插入英语子目录,替换第一个斜杠,例如s#/#/eng/#.在第二个表达式中,我使用哈希字符来分隔表达式和替换,以便我可以只键入斜杠而无需反斜杠。

结果:

$ echo bmb/case.bmb  | sed -e 's/bmb/bmx/g' -e 's#/#/eng/#'
bmx/eng/case.bmx

让我困惑的是:你的命令应该也有效。我只使用斜杠,而不是&第二个表达式中的 ,但这只是为了可读性。哪里的菜单来自不清楚。也许缺少一些上下文?

相关内容