2016-12-23 11 views
0

の範囲内の削除行は、私は特定の位置から行を削除したい... のような。私は以下のような内容のテキストファイルを持っているファイル

DP=TIBCO_EMS_2 
sed "/- displayName: $DP/,/excludeTopics/d" config.yml 

しかし、まだ運がない、sedの代わりに使用する正しいコマンドがありますか?

emsServers: 

    - displayName: "TIBCO_EMS_1" 
    host: "8988.auf.net" 
    port: 7443 
    protocol: "tcp" 
    user: "admin" 
    password: "" 
    encryptedPassword: "xzID9SbHsQTMkoRSVTGu4g==" 
    encryptionKey: "EncryptionKey" 
    showTemp: false 
    showSystem: false 
    excludeQueues: [sample1 sample2] 
    excludeTopics: [] 

    - displayName: "TIBCO_EMS_2" 
    host: "8988.auf.net" 
    port: 7333 
    protocol: "tcp" 
    user: "admin" 
    password: "" 
    encryptedPassword: "d4FqX7O6bZCDs2corcd2eA==" 
    encryptionKey: "EncryptionKey" 
    showTemp: false 
    showSystem: false 
    excludeQueues: [sample1 sample2] 
    excludeTopics: [] 

答えて

0

引用符がありませんでした。

DP=TIBCO_EMS_2 sed "/- displayName: \"$DP\"/,/excludeTopics/d" config.yml 
+0

こんにちはPII、

awk -vRS= '!/displayName: "TIBCO_EMS_2"/{print}' ORS="\n\n" filename 

、元の形式を変更せずに

awk -vRS= '!/displayName: "TIBCO_EMS_2"/{print}' filename 

を、それはうまくいっていますが、もう1つは何か私は構成されたセクションの終わりがsslVendorになります:その場合、どのように ''または条件を使用して、excludeTopics:またはsslVendor: –

+0

の最後を宣言することができますか?displayName: "ローカルEMS" ホスト: "localhost" ポート:7222 プロトコル: "TCP" ユーザー: "管理者" パスワード: encryptedPasswordに: encryptionKey: showTemp:偽 showSystem:偽 excludeQueues:[] excludeTopics:[] sslIdentityFile: sslIdentityPassword: sslTrustedCerts: sslDebug: sslVerifyHost: sslVerifyHostName: sslVendor: –

+0

" - displayName"のように次の行まで削除したい –

1

あなたはこのawk試すことができます:あなたは、変数に値を渡したい場合は

DP='"TIBCO_EMS_2"' 
awk -vVAR="$DP" -vRS= '{patt="displayName: "VAR} $0 !~ patt{print}' ORS="\n\n" 
+0

こんにちは、,,ファイルを更新していません。私があなたが言及したようにしてみました。 DP = '"TIBCO_EMS_2"' awk -vVAR = "$ DP" -vRS = '{patt = "displayName:" VAR} $ 0!〜patt {print}' ORS = "\ n \ n"ファイル名 –

+0

@ SureshchandraJarugula、それは元のファイルを更新しません。元のファイルを更新するには、 'awk' ... 'origfile> newfile && mv origfile origfile.bak && mv newfile origfile' – sat

関連する問題