在 sed 中,如何使用 bash 函数创建替换字符串,尤其是一个或多个找到的部分的函数,通常标识为 \1、\2、...?
换句话说,我想做这样的事情:
sed -e 's/\(.*\)/<bash_function \1>/'
注意:这个Q类似于How to embed a shell command into a sed expression?,但我不想调用 GNU/Linux 命令,而是想简单地调用本地 bash 函数。
在 sed 中,如何使用 bash 函数创建替换字符串,尤其是一个或多个找到的部分的函数,通常标识为 \1、\2、...?
换句话说,我想做这样的事情:
sed -e 's/\(.*\)/<bash_function \1>/'
注意:这个Q类似于How to embed a shell command into a sed expression?,但我不想调用 GNU/Linux 命令,而是想简单地调用本地 bash 函数。
您可以使用 GNU sed 执行此操作,使用以下
e
标志:在以下限制下:
整个生成的“模式空间”(即搜索和替换后的整个输入字符串)然后被执行,即不仅仅是最后两个斜杠之间的内容。这就是您在示例中显示的内容,但可能不是您真正想要做的。
你的系统
/bin/sh
是bash
您已经导出了函数,如此处所述我可以在 bash 中“导出”函数吗?
因此,例如在我的系统上(默认情况
/bin/sh
下dash
外壳在哪里),步骤是那我可以
这是另一个示例,以进一步阐明执行搜索和替换后的整个输入字符串:
如果你不能安排
/bin/sh
to bebash
,那么你能得到的最接近的可能是将函数定义放在一个文件中并首先获取它:但给定
然后