Linuxコマンド

説明

テキストの加工やパターン処理をさせる際に利用可能なとても便利なコマンドです。
※正確にはコマンドではないそうですが、、

前から◯カラム目を抽出

# cat tmp.txt
test0 hoge  kon0
test1 hoge1   kon1
test2 hoge2 kon2
test3 hoge3   kono3
# cat tmp.txt | awk '(print $3)'
kon0
kon1
kon2
kono3

後ろから◯カラム目を抽出

awk '{print $(NF -0)}'

例:
# ls -l
合計 2
-rw-r--r-- 1 root    root    1593 12月  6 12:37 2013 LOG.txt
-rw-r--r-- 1 root    root    1616 12月  6 12:46 2013 LOG2.txt

# ls -l | awk '{print $(NF -0)}'
LOG.txt
LOG2.txt

スクリプトとかで便利かと思うコマンドです。
数字の所を変更することで◯カラム目を指定可能です。※例では0を指定して1カラム目。

全体から該当する文字列の行だけ抽出(grep的な使い方)

行全体

$ cat access_log | awk '/wp-login/'

フィールド

$ cat access_log | awk '$5 ~ /29/Jun/2016:04:04/'

特定フィールドに特定の値がある場合のみ抽出

同じ値

$ cat access_log |  awk '$9==200'

以下以上

$ cat access_log | awk '$5>=20'
$ cat access_log | awk '$5<=20'

特定フィールドに特定の値がある数の合計を出力

$ cat access_log | awk '$5==200' | wc -l 
3052
↓
$ cat access_log | awk '{if($9==200) ok++};END{print ok}'
3052
↓
200と200以外の値
$ cat access_log | awk '{if($9==200) ok++;else ng++};END{print ok;print ng}'
3052
196

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-06-30 (木) 01:40:11