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
場合-q
にgrep
印刷できる出力も追加しました。