複数のパイプを除外するgrepを作成する方法は?

複数のパイプを除外するgrepを作成する方法は?

grepを使ってホスト名を区別したいです。 2つのファイルがあります。 yaml一つと.pp一つ。 yamlにはipを含むドメイン名があり、.ppファイルにはハッシュスタイルfqdnとipがあります。このように:

最初のファイルにはホストのリストがあります。

{ホスト=>ホスト1、ip=xxxx}、

{ホスト=>ホスト2,ip=xxxx},

2番目のファイルには、次の別のホストセットがあります。

ホスト1:

IP:xxxx

ホスト2:

IP:xxxx

まず、最初のファイルのホストリストをインポートし、同時に2番目のファイルのホストリストをインポートしようとしました。最初のファイルのホストが2番目のファイルにある場合はスキップします。

cat FILEONE.pp | grep 'host =>' | grep -v "cat FILETWO.yaml | grep '[0-9]:' | grep -v ip"

フィルター

"cat FILETWO.yaml | grep '[0-9]:' | grep -v ip"逆のgrepを実行するためにフラグの引数として前のgrepに渡したいのですが、それを機能させる-vことはできません...

即席で作れますか?

この問題は次のように簡素化できます。

どうすればいいですか?

grep -v {cat file | command2 | command3 | command4}

2番目のファイルにない場合は、最初のファイルのホストのみを含むリストを作成したいと思います。 (最初のファイルから2番目のファイルのホストを除く)

ベストアンサー1

どうですか?

cat FILEONE.pp | grep "host = $(cat FILETWO.yaml | grep '[0-9]:' | grep -v ip)"

おすすめ記事