awkを使用して入力を解析し、複数の列を印刷しますか? [閉鎖]

awkを使用して入力を解析し、複数の列を印刷しますか? [閉鎖]

私の入力ファイル行の形式は次のとおりです。

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)を定義します。これは正規表現文字列、含むキャラクタークラス「文字クラスに含まれるすべての文字」を意味する([..])はフィールド区切り文字です。

    • ここで選択した文字は'[またはです]
    • ]閉じる文字として扱われないようにするには、最初に来る必要があります。 (あなたも脱出できます!)
  • 最初のフィールドは$1firstで終わるので、'プロジェクト名は次のようになります。 $1

  • 影響を受けるバージョンはです$(NF-1)]最後の文字と同様に$NF空白です。

出力:

themostsimpleproject 7.19, 8.37

これは文字列を含む行を検索し、: AFFECTED2つ以上が影響を受けてもすべての画像バージョンを出力します。

おすすめ記事