更新特定行和部分的行

时间:2017-03-21 12:45:00

标签: shell unix

我的文件和内容如下所示。

8,304700e-04

我想仅在#Start of VM1到#End OF VM1

的行之间用[test1,test2,test3]更新includeQueue部分的行

有人可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

以下将选择“Start OF VM1”和“End OF VM1”之间的记录范围,然后在该块记录上应用gsub功能。其中[]替换为[test1,test2,test,*]

 awk '/Start OF VM1/,/End OF VM1/{if( $0 ~/includeQueues/ )gsub(/\[\]/,"[test1,test2,test,*]")}1'
------------------------------------------------
#########
## If xxxx:
##
servers:
# Start OF VM1
   - displayName: "I_INST1_1"
     includeQueues: [test1,test2,test,*]
     excludeTopics: []
# End OF VM1
# Start OF VM2
   - displayName: "I_INST1_2"
     includeQueues: []
     excludeTopics: []
# End OF VM2
---------------------------------------------------

答案 1 :(得分:0)

尝试:

awk '/End OF VM1/{A=""} /Start OF VM1/{A=1} A && /includeQueues/{$0="includeQueues: [test1,test2,test,*]"} 1'  Input_file