2017-06-28 5 views
0

パターンに一致するファイルを読み込もうとしていますが、次の連続する行にあり、異なるファイルの値の合計)。誰かがsedを使ってこのロジックを達成するのを助けることができますか?sedを使って一致したパターンの次の行にある値をプリントする方法

ファイル1:

hosts: 
- abc 
- def 

ファイル2:

hosts: 
- abc 
- def 
- ghi 

私はsedを使用してホストの値を取得したいです。ファイル1の SED

- abc 
- def 

を返すとfile2のsedのはずですが

- abc 
- def 
- ghi 

感謝を返す必要があります。

+0

ファイル1: をホスト: - abc - def ファイル2: ホスト: - abc - DEF - ファイル1のGHI SED 返さなければならない - ABC を - DEF とfile2のsedの 返さなければならない - ABC - DEF - GHI – wasay

+0

使用コード/データの各ラインの前に4つのスペースを/ error msgsまたはテキストブロックを強調表示し、編集ボックスの左上にある '{}'形式のツールを使用して、コード/データ/出力として書式を設定します。がんばろう。 – shellter

+1

ホストのリストがどのように終わるのか、どう理解していますか?次の行には何がありますか? – karakfa

答えて

0

hostsと次の空白行(コメントで述べたように)間の線印刷するには:

sed '/^hosts/,/^$/{//d;}' file 
0
cat file1 | tail -n+2 

は、1行のヘッダーがあり、それからホストがあればそれを行います。

+0

あなたの迅速な対応に感謝します。実際には、ホストの値は次の連続した行にあり、ホストと同じ行にはありません(したがって、abcは新しい行にあり、defは新しい行にあります)。私は、stackoverflowがホストと同じ行に値をポストしている理由は知らない。また、私は例を示すために2つのファイルを述べました。私はsedまたは他のツールを使用しているファイルからホストの値だけを必要とします。 – wasay

+0

これはyamlファイルのようです。 – MrE

+0

pythonやpyyamlのようなyaml解析ツールを使う方が良いかもしれません – MrE

0

これは少し不器用ですが、動作するように表示されます。

sed -n -e ':a' -e '/\n$/{s/hosts:\n//; p;}' -e '/hosts/N' -e '/hosts/ b a' filename 
関連する問題