xargsを使用したリンクコマンド

xargsを使用したリンクコマンド

bashを使用して次の結果を取得しようとしています。

  1. grep特定の部分文字列のファイルです。
  2. これらのファイルのファイル名(スペースを含めることができます)を取得して印刷します。
  3. 各ファイル名を印刷して再度grepしたいのですが、今回はそのファイル内でのみ可能です。

結果は次のとおりです。

/tmp/file1.txt
it works!
/tmp/file2.txt
/tmp/file3.txt
it works!

次のコマンドを作成しようとしています。

grep -irl "something" . | xargs -I % sh -c 'echo "%"; cat "%" | grep -i "another thing" "%"'

説明:grep -lファイル名を返します。その後、このファイル名を印刷しecho "%"てからファイル内でgrepを実行しようとします。

しかし幸運はありません。ここで教訓は何ですか?

明らかに、私の実際の問題/目標は、文字列Aを含むが文字列Bを含まないすべてのファイルを見つけることです。

追加の説明:似たようなものが欲しいが、grep A | grep -v B一致するすべてのファイルのリストも欲しい。A

ベストアンサー1

ここで教訓は何ですか?

おそらくプリンに卵を入れすぎないでください

%
>  grep -l -r - "$patternA" 。 |
>  ティー/開発/fd/7 |
>  xargs grep -L --"$patternB"
>)7>&1

おすすめ記事