おなじみの場合ディサスティグ、テストはRHEL-06-000518はい
/bin/rpm -Va 2>/dev/null \
| /bin/grep '^.M'
私が望むのは、そのテストからファイル名を抽出し、パッケージ名と問題のファイルを含む素晴らしい出力を取得することです。しかし、私のawkはこれを行いません。これが私が試していることです:
/bin/rpm -Va 2>/dev/null \
| grep '^.M' \
| awk '{print ($2 ~ /./ ? $3 : $2)}'
理論的には、フィールド2が単一文字ファイル形式(%config、%documentationなど)の1つである場合rpm のマニュアルページ)
しかし、私が得るのは、if-and-only-if($ 2〜/./)というファイル名です。それ以外の場合は、最後の$ 2を$ 0に置き換えても空の行のみが表示されます。
私は何を見逃していますか?
答え1
空の文字列、つまり行にゼロまたは1つのフィールドがある場合を$2 ~ /./
除き、テストは常に正確です。$2
あなたはそれを試す必要があります$2 ~ /^.$/
。
grepとawkを1つにまとめることもできます。
awk '/^.M/ {print ($2 ~ /^.$/ ? $3 : $2)}'