私の入力ファイル行の形式は次のとおりです。
themostsimpleproject', branch 'debug_randomnness' : AFFECTED. Affected image discovered: [7.19, 8.37]
awkを使用して影響を受けた画像のプロジェクト名とバージョンを印刷したいと思います。例:
themostsimpleproject 7.19, 8.37
awkでどうすればいいですか?私はコマンドラインで実行できる簡単なコードを好みます。前任者: awk -F"\," 'print $1 $4'
。しかし、簡単なスクリプトも大歓迎です。
'
注:プロジェクト名の末尾に印刷したくありません。
ベストアンサー1
以下を試してくださいawk
。
awk -F "[]'[]" '/: AFFECTED/{print $1, $(NF-1)}' input
-F
フィールド区切り記号(FS)を定義します。これは正規表現文字列、含むキャラクタークラス「文字クラスに含まれるすべての文字」を意味する([..]
)はフィールド区切り文字です。- ここで選択した文字は
'
、[
またはです]
。 ]
閉じる文字として扱われないようにするには、最初に来る必要があります。 (あなたも脱出できます!)
- ここで選択した文字は
最初のフィールドは
$1
firstで終わるので、'
プロジェクト名は次のようになります。$1
影響を受けるバージョンはです
$(NF-1)
。]
最後の文字と同様に$NF
空白です。
出力:
themostsimpleproject 7.19, 8.37
これは文字列を含む行を検索し、: AFFECTED
2つ以上が影響を受けてもすべての画像バージョンを出力します。