列に特定の文字列が含まれている場合に1行だけを出力する方法[閉じる]

列に特定の文字列が含まれている場合に1行だけを出力する方法[閉じる]

4つの列があり、3番目の列にはAGという文字が含まれています。列が空でない場合、またはAGが含まれている場合にのみ行を出力したいと思います。これが私の現在のコードです。圧縮ファイルから読み込みます。

bzcat $file | cut -d, -f3,4,20,21 |grep -E '[A-G]'|head -100 

答え1

あなたの質問は少し混乱しています。しかし、awkあなたが探しているものが何であるかを理解している場合は、次のことを試してください。

awk 'BEGIN{FS=","}$3~/[A-G]+/{print}'
  1. FS=フィールド区切り記号を定義します。熱を区別するものは何ですか?

  2. $33番目のフィールドです。柱。

  3. ~/[A-G]+/awk文字AGとのみ一致する正規表現を示します。

awkライン指向ストリームエディタ。たとえば、入力ストリームを通過します。そして、bzcat $file |各行の3番目の「フィールド」を調べて、一致する正規表現があるかどうかを確認します。その場合、中かっこ内のコマンドのリストが実行されます。この場合、基本的に内容全体を印刷する単純な印刷ステートメントです。ライン。

awk素晴らしい、非常に強力で機能豊富なプログラムなので、少なくとも基本は学ぶ価値があります。man詳しくは該当ページをご確認ください。

関連情報