AWKを使用した複数行の抽出[閉じる]

AWKを使用した複数行の抽出[閉じる]

たとえば、複数の行と列を含むファイルがある場合は、特定の行と列を抽出できますか?

例えば

1 4/8/2016 4/7/2016 4/6/2016
2 john_doe jane_doe sarah_test
3 26 45 20
4 4/8/2015 6/8/2016 8/26/2016
5 5:15 2:30 6:00

希望の出力

1 4/8/2016 4/7/2016 4/6/2016
2 john_doe jane_doe sarah_test
4 4/8/2015 6/8/2016 8/26/2016

答え1

はい、特定の行と列を取り出すことができます。

これはあなたが質問した正確な答えの結論です。


しかし、いくつかの一般的なアドバイスをしたいと思います。

awk単純な条件 - 作業モデルに基づいて構築されました。

条件を指定し、その条件に一致するアクションを提供します。

条件が「3行目」であり、ジョブが「行の最初の2フィールド印刷」であると仮定する。これは次のとおりです。

awk 'NR==3 {print $1, $2}'

条件が「行に文字「a」が含まれている」で、ジョブが「全行印刷」であると仮定します。

awk '/a/ {print}'

行全体を印刷するのは一般的な操作なので、デフォルトは次のとおりです。

awk '/a/'

条件が「各行」であり、ジョブが「第2フィールド印刷」であると仮定する。条件を省略できます。

awk '{print $2}'

詳しくは、正しいチュートリアルを読む

答え2

awk '$2 ~ /^[abd]$/ { print $2, $3, $4 }'

a2番目のフィールドが、bまたはイン行の場合、d2番目、3番目、および4番目のフィールドを印刷します。

選択基準をまったく指定せず、提供していただいた入力と出力の違いに基づいて推測をしなければなりませんでした。

関連情報