[英]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.