【问题标题】:How to replace part of line in file using sed with regex?如何使用 sed 和正则表达式替换文件中的部分行?
【发布时间】:2019-05-18 09:14:22
【问题描述】:

我正在使用 sed 并想在文件中找到一部分并替换它 我想找到 address= 和里面的内容 "" 替换 在这种情况下,“我的位置”替换为伦敦, 我正在使用以下脚本替换 address= 之后的所有内容,而我只想替换 ""

<test address="my location",it is located>

sed -e s/address =.*$/address =com.test/g /file.json

【问题讨论】:

    标签: bash sed terminal


    【解决方案1】:

    我相信您正在寻找的只是:

    sed -e 's/address=".*"/address="London"/g'
    

    示例中的正则表达式替换 address= 之后的所有字符,直到行尾 $

    编辑:对评论的回应:

    您可以捕获address=",然后在替换字符串中使用反向引用\1 引用它:

    sed -e 's/\(address="\)[^"]*/\1London/g'
    

    【讨论】:

    • 是的,谢谢,这是一个解决方案,但是如果我不想在第二部分重复“地址”,想搜索地址,然后替换呢?
    • sed -e "s/(address=")[^"]*/\1London/g" \;我得到不平衡括号([])
    猜你喜欢
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2018-08-22
    • 1970-01-01
    相关资源
    最近更新 更多