文字列に対する Grep コマンドは、コメントアウトされていない行にのみ存在しません。

文字列に対する Grep コマンドは、コメントアウトされていない行にのみ存在しません。
try2:
   set -vn
   set -o pipefail
   set -e
   if grep -v '^#' file.tx | grep -P 'name' file.tx; then \
      echo "    No name"; exit 0;\
      echo " This message is print from file.tx" \
      cat file.tx; fi

1)上記のコードは、次の場合にgrepを試みます。名前には存在しませんファイル.txするとエコーになります「名前なし」。コメントされていない行に単語がない場合は、その単語を探したいが機能しないようです。

2) 最初の声明が偽であればどうすればよいですか? 2番目の声明に進みます。上記のコマンドが機能していないようです。

注:このコードはMakefileに書き込まれ、ターゲット名は次のとおりです。2回試してください

ベストアンサー1

質問を理解すると、次のファイルがあります。

#魔法の単語名を含むコメント

魔法の言葉が含まれていないもの

「名前なし」を印刷したい。最初の行のコメントを外すと、「名前なし」は印刷されません。

以下はトリックを行う必要があります。

if grep -v '^#' file.tx | grep -q name; then
       echo "no name"
fi

コードでは、2番目のコードにはgrepファイル名が含まれているため、最初のコードのパイプ入力は表示されません。また、Perl正規表現を使用しないため、その項目を削除し、一致が抑制された-P場合-qgrep印刷できる出力も追加しました。

おすすめ記事