我有输入
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/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
我已经以多种方式修改了上述命令,但我没有得到预期的输出。
首先,一次做一件事更容易,因此使用 复制保留空间中的行
h
,修改该行以生成第一个输出行,p
打印它,然后使用 恢复保存行g
并修改它以生成第二个输出行。这允许您进行非常简单的替换,例如
s/eng./&/
第一部分,或者s_/.*/__
目录可以具有任何名称或者可以是比一个层次结构更核心的目录。s/bmb/bmx/
第二行也很简单。产生所需的输出。
您可以像使用文字处理器的剪贴板一样使用保留空间。这是一个非常通用且易于使用的工具,但遗憾的是,许多
sed
用户没有使用它的功能。