加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

用sed bash函数替换

发布时间:2020-12-14 01:39:25 所属栏目:Linux 来源:网络整理
导读:我的问题似乎很笼统,但我找不到任何答案. 在sed命令中,如何用简单的bash函数返回的值替换替换模式. 例如,我创建了以下函数: function parseDates(){ #Some process here with $1 (the pattern found) return "dateParsed;} 以及下面的sed命令: myCatFile=`
我的问题似乎很笼统,但我找不到任何答案.

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

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

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

以及下面的sed命令:

myCatFile=`sed -e "s/[0-3][0-9]/[0-1][0-9]/[0-9][0-9]/& parseDates &}/p" myfile`

我找到了’&’表示当前发现的模式,我希望它传递给我的bash函数,并将整个模式替换为找到的模式dateParsed.

有人有想法吗?
谢谢

解决方法

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

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

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

function parseDates(){
    # Some process here with $1 (the pattern found)
    echo dateParsed
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读