我有这样的文件:
subset {
set {
type "car"
product "ww"
dealer "something"
features "0"
wheels 4
}
这可以用不同的“类型”重复
我想在“集合”中的最后一个 } 之前插入一些内容
所以它看起来像(不确定 awk 或 sed 是否能以某种方式检测到前面有多少空格 :D ):
subset {
set {
type "car"
product "ww"
dealer "something"
features "0"
wheels 4
something
}
我可以用它来匹配
sed "/type.*.car.*/,/\} .... something here..."
文件我只是想不出来.. 我不能寻找“轮子”,因为那可能是不同的东西。任何帮助将不胜感激。
最佳答案
这可能对你有用(GNU sed):
sed '/\<type\>.*\<car\>/{h;:a;n;/^\s*}/!ba;x;s/\S.*/something/;G}' file
查找包含所需type
的行,复制该行,然后读取/打印后续行,直到以右花括号开头的行。交换回复制的行并将第一个非空格开始的所有内容替换为所需的字符串,附加包含右花括号的行并打印结果。
关于regex - 在 sed 或 awk 中的两个匹配项之间的最后一行之前插入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58559955/