2016-05-31 58 views
1

刪除主塊我有類似內容的YML文件,如何從陽明

test: 
    volumes: 
    - /u01/test-service/conf:/root/config 

testmanager: 
    port: 
    - "2222:80" 

我想基於一些條件刪除測試或TestManager的塊。這裏是awk的表情,我發現here

awk '{sub(/\r$/, "")} 
        $1 == "test:"{t=1} 
        t==1 && $1 != "test:" {t++; next} 
        t==2 && /:\s*$/{t=0} 
        t != 2' 

這一切刪除測試,但保持字符串「測試」。事情是這樣的,

reportservice: 
reportmanager: 
    port: 
    - "2222:80" 

如何解決這一問題?請幫忙。

回答

1

在所示的輸入可以使用此awk命令空RS

awk -v RS= '!/^[[:blank:]]*test:/' file.yml 

testmanager: 
    port: 
    - "2222:80" 

這假定有各塊之間的空行。如果這不起作用,您可以修改您現有的命令:

awk '{sub(/\r$/, "")} 
    $1 == "test:"{t=1} 
    t==1 && $1 != "test:" {t++; next} 
    t==2 && /:\s*$/{t=0} 
    !t' file.yml