在sed中使用外部变量

本文最后更新于2016年7月14日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

在编写一个Bash脚本时需要用sed命令对结果进行精简(将某个字符串中经常出现的公共子串用一个短变量名表示),最初的写法是:

但是没有起到作用,当时也比较忙,没有仔细检查问题出在哪了,只是先简单的把最后的sed替换命令给去掉了。现在刚好有点时间,找到了解决办法,在此记录一下,方便以后参考。

正文:
搜索关键字:

linux bash sed search with var

参考解答:

三种方法:

  1. 使用「双引号」而不是「单引号」
  2. 使用多重「单引号」
  3. 使用Bash内置的字符串替换操作(效率最高)。

测试用例如下:

参考链接:
另:

之前在使用awk的时候也遇到过一个类似的问题:在awk中使用外部变量。在此也顺便记录一下:如果需要在awk中使用外部的变量,可以借助awk的「-v」选项。

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/2765.html

《在sed中使用外部变量》上有1条评论

  1. 1.在一个sed命令中进行多次替换操作;
    方法一:用大括号包起来
    echo "url = git@github.com:taizilongxu/interview_python.git" | sed '{s#:#/#; s#git@#https://#;}'

    方法二:用多个「-e」选项
    echo "url = git@github.com:taizilongxu/interview_python.git" | sed -e 's#:#/#' -e 's#git@#https://#'

    2.在匹配到的行上进行替换操作;
    sed -i '/url = git@github/{s#:#/#; s#git@#https://#;}' .git/config

    http://unix.stackexchange.com/questions/155331/sed-replace-a-character-in-a-matched-line-in-place
    http://stackoverflow.com/questions/7573368/in-place-edits-with-sed-on-os-x

发表评论

电子邮件地址不会被公开。 必填项已用*标注