繁体   English   中英

使用sed替换字符串

[英]string replace using sed

我有一个字符串如下。 使用sed我想在名称:“ user”和密码后用“ 66666”输入字符串替换值详细信息:输入字符串:

        name: "user"
        value: "55555"
        username: "test"
        value: "77777"
        password : "55555"

预期产量:

        name: "user"
        value: "66666"
        username: "test"
        value: "77777"
        password : "66666"

我尝试了以下内容,但没有成功。 它仅替换密码,而不是名称后的值

sed -i -e 's/\(password\|name: "[^"]*"{\n}value\): "[^"]*"/\1: "66666"/' test.txt

尝试这个:

sed -e '/name: *"user"/{' -e ':a;' -e 'N;/password *:/!ba;' -e 's/\(value *: *\)"[^"]*/\1"66666/;s/\(password *: *\)"[^"]*/\1"66666/;}' test.txt
        name: "user"
        value: "66666"
        username: "test"
        value: "77777"
        password : "66666"

sed是一个流编辑器,默认情况下它会读取并分别处理每一行。
在这里,我使用N读取并追加了下一行,并替换了其中的内容。
我删除了-i switch,因此您可以先在shell上对其进行测试,然后在结果看起来还可以的时候将其添加回去。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM