我正在尝试替换字符串匹配的上一行。
示例json
"test" : {
"aa" : true,
"ac" : "port",
"tr" : "p2",
"ll" : 90,
"mp" : true
}
如果“ll”等于90,我需要将前一行更改为“mu”:“p1”。我已经尝试了下面的sed但它总是替换相同的行而不是前一行。请建议
sed -e '/"ll" : 90/!b;!N;c"mu" : "p1"'
答案 0 :(得分:1)
您可以试试sed
:
sed 'N;/\n *"ll" : 90/{s/^\([^"]*\).*\n/\1"mu" : "p1",\n/;};P;D' file
正如@potong所说,
sed -r 'N;s/.*(\n(\s*)"ll" : 90,)/\2"mu : "p1",\1/;P;D' file
输出:
"test" : {
"aa" : true,
"ac" : "port",
"mu" : "p1",
"ll" : 90,
"mp" : true
}