【SHELL】跨行内容查找、替换、删除


跨行内容查找、替换、删除

sed '/{START-TAG/{:a;N;/END-TAG}/!ba};/ID: 222/d' data.txt
/{START-TAG/ { # Match '{START-TAG'
:a             # Create label a
N              # Read next line into pattern space
/END-TAG}/!    # If not matching 'END-TAG}'...
           ba  # Then goto a
}              # End /{START-TAG/ block
/ID: 222/d     # If pattern space matched 'ID: 222' then delete it. 

清除范围START-TAG到END-TAG的内容

sed -i '/{START-TAG/{:a;N;/END-TAG}/!ba};//d' file.txt

替换范围START-TAG到END-TAG的内容为Target

sed -i '/{START-TAG/{:a;N;/END-TAG}/!ba};s/START-TAG.*END-TAG/Target/' file.txt

<来源>