列値によるデータのフィルタリング

列値によるデータのフィルタリング

列が(時間)で始まる行のみを検索したいが、03:以下のコマンドを使用すると、値にが含まれているすべての行が表示されます03。以下は例です。ファイルのデータが非常に大きいです。

awk '{print $2 " " $3}' logfile | grep "03:"

データ:

05 00:03:12 0.05
05 00:28:03 0.05
05 00:33:12 0.09
05 03:03:12 0.09
05 03:08:12 0.05
05 03:13:12 0.05
05 03:18:12 0.05
05 03:23:12 0.027

答え1

サンプルデータなど、時間の前に常にスペースがある場合は、次のものを使用できますgrep

grep " 03:" file

答え2

awk '$3 ~ /^03/ {print $2 " " $3}' logfile

$3 ~ /^03/ は、入力ファイル ($3) の 3 番目の列が (^) 03 で始まることを確認します。残りはawkパターン一致構文(〜/ pattern /)です。これにより、grepの使用によるオーバーヘッドも削減されます(プログラミング用語では2ループではなく1ループ)。

答え3

#awk '{print $2 " " $3}' logfile | grep "03:" | uniq -u

関連情報