如何搜索具有2个连续新行的文件并修改后一行?

时间:2018-11-19 16:48:35

标签: grep yaml

我有几个目录,有一堆文件需要更改。所做的更改涉及我查找包含selectorservice标签的文件:

selector:
    service: XXXXX

,然后将service标签替换为app

selector:
    app: XXXXX

顺便说一句,this similar stack overflow thread中的解决方案均无效。

1 个答案:

答案 0 :(得分:1)

如果您想使用AWK(gawk)解决方案。这里是。 考虑根据您的问题输入的信息:

$ cat v1mg1rl.txt
application:
    id: 0
    service: WWWWW
selector:
    id: 1
    service: XXXXX
cartridge:
    id: 2
    service: ZZZZZ

AWK:

$ awk '/^[^ ]+/ { isselector=0; } /^selector:/ { isselector=1; } /^ +service: / { if (isselector) sub(/service: /,"app: "); } { print($0); }' v1mg1rl.txt
application:
    id: 0
    service: WWWWW
selector:
    id: 1
    app: XXXXX
cartridge:
    id: 2
    service: ZZZZZ