用sed + bash函数替换

Sam*_*lil 6 bash sed substitution

我的问题似乎很笼统,但我找不到任何答案.

在sed命令中,如何用简单的bash函数返回的值替换替换模式.

例如,我创建了以下函数:

function parseDates(){
    #Some process here with $1 (the pattern found)
    return "dateParsed;
}
Run Code Online (Sandbox Code Playgroud)

以及下面的sed命令:

myCatFile=`sed -e "s/[0-3][0-9]\/[0-1][0-9]\/[0-9][0-9]/& parseDates &\}/p" myfile`
Run Code Online (Sandbox Code Playgroud)

我发现caracter'&'代表当前发现的模式,我希望它传递给我的bash函数,整个模式被找到的模式+ dateParsed替换.

有人有想法吗?谢谢

use*_*own -4

您可以通过结束单引号部分并再次重新打开它来将 sed 命令粘合在一起。

sed -n 's|[0-3][0-9]/[0-1][0-9]/[0-9][0-9]|& '$(parseDates)' &|p' datefile
Run Code Online (Sandbox Code Playgroud)

然而,与其他示例相比,bash 中的函数不能返回字符串,只能将它们输出:

function parseDates(){
    # Some process here with $1 (the pattern found)
    echo dateParsed
}
Run Code Online (Sandbox Code Playgroud)