機能 ショートカットキー
リファレンス(参考URL)一覧へ移動 R
記事URLをMarkDownとしてコピー Ctrl+M
前のコードタグへ移動 Ctrl+←
次のコードタグへ移動 Ctrl+→
ヘルプを表示・非表示 H
Tips
- ショートカットキーは記事上で有効です。ヘッダー/フッター付近では機能しないことがあります。
- コードタグ移動機能がうまく動かないときは、Shift+F5でページを更新してみてください。
- このウィンドウを閉じるには、Hキーをもう一度押してください

(shell) awkチートシート [外部コマンド実行]

プログラミング

単語:
レコード … 行。上から下
カラム … 列。左から右

変数:
FS セパレーター(デフォルトでは空白スペース)
NF カラムの合計数
NR レコードの合計数
$1 第一カラム
$2 第二カラム

正規表現に当てはまる行を出力 (=grep -E)

プログラミング

awk '/regex/'

第一カラムが正規表現に当てはまる行を出力

プログラミング

awk '{if ($1 ~ /regex/){print $1,$2,$3,$4}}'

e.g. df | awk '{if ($1 ~ /\w{1,2}:/){print $1,$2,$3}}'

pythonを実行 / 外部コマンド実行

プログラミング

(第四カラムの数値をpythonを利用して100倍にする例)

awk '{"python -c \"print("$4"*100)\" | perl -pe 'chomp'" |& getline $11 ; print "The 4th column was being x100:"$11 }}'

e.g.

$ df 2>/dev/null | tail -3
E:             2930133932  381876300 2548257632  14% /mnt/e
G:             2930133932 1545875952 1384257980  53% /mnt/g
H:             2930134012 2625853000  304281012  90% /mnt/h

$ df 2>/dev/null | tail -3 | awk '{if ($1 ~ /\w{1}:/){"python -c \"print("$4"/1000/1000)\" | perl -pe 'chomp'" |& getline $11 ; print $1,$11"(GB)",$5,$6}}'
E: 2548(GB) 14% /mnt/e
G: 1384(GB) 53% /mnt/g
H: 304(GB) 90% /mnt/h

キモ:
* $1などを引数などコマンドに渡したい場合、""で囲わないようにしてやる。
* 大抵の出力は\n改行が入るので、perlなどでchompしてやる。
* |& getline $11で、コマンド出力を$11に代入してやる事が可能。これをしないと、$0(?)として処理されるらしく、出力の0番目のカラムとしてカラムの先頭に出力が挿入される。
* 代入処理をする場合system()は使えない(?)みたい

awk – Assigning system command’s output to variable – Stack Overflow

該当の全てのプロセスをkill

プログラミング

(npmを含むプロセスをkillして実行結果を出力)

ps aux | grep "npm" | awk '{"kill -9 "$2 |& getline $11 ; print $11}'

(関数)

# killp(){
#     ps aux | grep "$1" | awk '{"kill -9 "\\$2 |& getline \\$11 ; print \\$11}'
# }
killp(){
    ps aux | grep "$1" | awk '{"kill -9 "$2 |& getline $11 ; print $11}'
}

該当の全てのバックグラウンドプロセスをkill

プログラミング

(webpack-devを含むものをkill )

ps S | awk '/webpack-dev/' | awk '{"kill -9 "$1 |& getline $11 ; print $11}'


こちらも参考にどうぞ。

AWK Cheat Sheet | ShortcutFoo
AWK cheatsheet

この記事で欲しい情報が見つからなかった方へ

この記事の更新情報がある場合があります。
この記事は以下の記事とも関連性があると思われます。

Bash inotifywaitでファイルが変更されたらコマンドを実行する
manを使うのに抵抗がある全SEへ送るmanより手軽なマニュアル系コマンド
bash 複数のコマンドを1つの出力にまとめる / 1つの出力を複数のコマンドに渡す
Telegram APIでUbuntu BashからcurlコマンドでTelegramにメッセージを送信する
Windows 環境変数設定をコマンドから開く
UbuntuでWindowsのタスクマネージャーみたいなコマンド
Ruby windowsのソフトウェアを外部コマンドから開く・起動する


管理人の方針で、既存の記事の編集はせず、新しい情報や大きな既存情報の更新があった場合には、新しい記事として公開することになっています。
当記事で欲しい情報が見つからなかった・解決に至らなかった場合、これらのリンクがお役に立てるかも知れません。

どうやってこの関連記事を生成しているの?
この機能のPHPソースコード(2500行)

コメントを残す

Close Menu