【awk】「列毎に別処理」or「特定の列のみに処理」

シェルスクリプトで列毎に別処理を行ったり、特定の列のみに処理を行いたいときがある。 for文やwhile文で行うのも手だが、アクセスログなどの大きいデータを処理する時には時間がかかってしまい使い物にならない。 awkを用…

Read more

awkでOSコマンドを使う

こんな感じで使える。 awkの変数はダブルクオートで囲む。 echo “TEST” | awk ‘{system(“echo “$1″”)}’

Read more

【AWK】特定文字列で囲まれている部分を抜き出す

例: XML、HTMLのタグの中身 例: Apache設定のディレクティブ (コンテナ) の中身 $ cat /etc/httpd/conf.d/ssl.conf | awk ‘/<VirtualHost _def…

Read more

awkで重複している行を削除

重複行を削除する方法はいっぱいありますが、awkでもできます。 awk ‘!a[$0]++’

Read more

awkのFS(field separator)

awkコマンドの-Fオプションについて awkコマンドに-Fオプションを指定することで、FS(field separator)を指定することができる。 FSのデフォルトは、スペースとなっている。 nishi &#8221…

Read more

[awk]変数を代入する

-vオプションを使用します。 STRING=”hoge hoge huga” echo $STRING | awk -v my-string=${STRING} ‘{print my-string}’

Read more

[awk]ログから特定の範囲の日時のものを抽出する

/var/log/secureなどのログフィアルから、特定の範囲の日時を指定して、そのログだけを抽出する方法 $ awk -F – ‘”開始時間” < $1 && $1 <= “終了時間”‘ …

Read more

awkのバグ(最小値を求める)

awkで最小値を求める awkで最小値を求める際バグで改行が計算結果に入ってしまう場合がある。 その時は以下のように、最初に空行を削除してソートを行い、1行目を取り出すことで最小値を求めることができる。 awk ‘{pr…

Read more

awkの中でシェルの変数を使う

awkコマンドでは、パターンとアクション部分に分かれており、今回はパターンでの変数の使用方法になる。 awkコマンドでは、そのままでは変数として認識しないため以下のようにする。 ‘${変数名}’ また変数はそのまま代入さ…

Read more

特定の行から特定の行までを抽出する

テキストファイルを操作する場合や複数行の文字列を操作する時、awkコマンドを用いることである特定の文字列が含まれる行から別の特定の文字列が含まれる行までを抽出することができます。 例えば、BEGINが含まれる行からEND…

Read more

アクセスログを時間別+条件付きでソート

以下のコマンドでアクセスログを時間別+スタイルシートやJavaScript、画像、internal dummy connectionのアクセスを除く条件付きでソートすることが出来る。 grep部分が除く処理、cut部分が…

Read more

awkを使ってアクセスログから特定の時間を抜き出す

アクセスログから高負荷の時間帯を抜き出して、 アクセス数を出してサイジングをしたりするのですがawkを使うと高速にできそうです。 cat access_log ssl_access_log | awk ‘$4 ~ /\[…

Read more

Dockerのいろんなデータを削除

コンテナを全削除 $ docker ps -a | awk ‘{print $1}’ | tail -n +2 | xargs –no-run-if-empty docker stop && docke…

Read more

【awk】最後のフィールドだけぶっこ抜く

awk -F’ ‘ ‘{print $NF}’ # 実行例: $ while read -r val > do > echo $val | awk -F ” ” ‘{print $NF}’ > done…

Read more

awkで2行目以降だけ処理する

cat path/to/text | awk -F’=’ ‘NR > 1 {print $0}’

Read more