ログファイルは次のようになります
34.3.23.58 07:20:01 AM all 0.02 0.00 0.02 0.00 0.00 99.97
34.3.23.58 07:30:01 AM all 0.02 0.00 0.02 0.00 0.00 99.97
34.3.23.58 07:40:01 AM all 0.02 0.00 0.02 0.00 0.00 99.97
34.3.23.58 Average: all 0.02 0.00 0.02 0.00 0.00 99.96
34.3.23.60 Linux 3.10.0-514.26.2.el7.x86_64 (dns) 09/25/2019 _x86_64_ (4 CPU)
秒フィールドが時間:分:秒の行のみをキャプチャしたい
次のような結果が期待される
cat info.txt
34.3.23.58 07:20:01 AM all 0.02 0.00 0.02 0.00 0.00 99.97
34.3.23.58 07:30:01 AM all 0.02 0.00 0.02 0.00 0.00 99.97
34.3.23.58 07:40:01 AM all 0.02 0.00 0.02 0.00 0.00 99.97
私たちは努力する
cat info.txt | awk '$2 =~ [0-9][0-9]/:[0-9][0-9]:[0-9][0-9]'
しかしエラーが発生する
awk: cmd. line:1: $2 =~ [0-9][0-9]/:[0-9][0-9]:[0-9][0-9]
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: $2 =~ [0-9][0-9]/:[0-9][0-9]:[0-9][0-9]
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: $2 =~ [0-9][0-9]/:[0-9][0-9]:[0-9][0-9]
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: $2 =~ [0-9][0-9]/:[0-9][0-9]:[0-9][0-9]
awk: cmd. line:1: ^ unterminated regexp
答え1
正しい構文は
<info.txt awk '$2 ~ /^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]$/'
変更点:
- の無駄な使用はありません
cat
。 - 演算子は です
~
。 - パターンはスラッシュ (
/regex/
) で囲む必要があります。 ^
$
それぞれ一致した文字列の先頭と末尾 (ここでは)と一致します$2
。