ここを見るとPOSIXコマンドだけで結構な量があることがわかる.
POSIXは基本どこでもある程度動くので便利だ.
なにせWindowsでさえMSYSなどを入れればそれなりに動く.SUAもあるし.
面白いので知らないコマンドを試してメモしていくことにした.
cutコマンド
タブ区切りのフィールドを選択して出力するコマンド.
百聞は一見にしかずで.
最近のsyslogを5行出力.
twinbird@:~$ tail -n 5 /var/log/syslog.1 Feb 12 12:11:41 twinbird-pc cracklib: no dictionary update necessary. Feb 12 12:11:41 twinbird-pc systemd[1]: Stopping CUPS Scheduler... Feb 12 12:11:41 twinbird-pc systemd[1]: Stopped CUPS Scheduler. Feb 12 12:11:41 twinbird-pc systemd[1]: Started CUPS Scheduler. Feb 12 12:11:41 twinbird-pc rsyslogd: [origin software="rsyslogd" swVersion="8.12.0" x-pid="697" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
cutを使うと
twinbird@:~$ tail -n 5 /var/log/syslog.1 | cut -f1,2,3 -d ' ' Feb 12 12:11:41 Feb 12 12:11:41 Feb 12 12:11:41 Feb 12 12:11:41 Feb 12 12:11:41
欲しいフィールド(この場合最初の3列)だけ取り出せる.
オプション
オプション | 意味 |
---|---|
-f | 抽出するフィールドの列番号を指定する |
--complement | (-fとセットで使う)-fで指定する番号以外のフィールドを抽出する |
-d | フィールドのデリミタを指定する |
-b | フィールド単位ではなくバイト単位で抽出する範囲を指定する |
-c | フィールド単位ではなく文字単位で抽出する範囲を指定する |
例
スペース区切りで, 1〜3番目のフィールドを取り出す
twinbird@:~$ tail -n 5 /var/log/syslog.1 | cut -f1-3 -d ' ' Feb 12 12:11:41 Feb 12 12:11:41 Feb 12 12:11:41 Feb 12 12:11:41 Feb 12 12:11:41
スペース区切りで, 1,4番目のフィールドを取り出す
twinbird@:~$ tail -n 5 /var/log/syslog.1 | cut -f1,4 -d ' ' Feb twinbird-pc Feb twinbird-pc Feb twinbird-pc Feb twinbird-pc Feb twinbird-pc
スペース区切りで, 2番目以降のフィールド以外を取り出す
twinbird@:~$ tail -n 5 /var/log/syslog.1 | cut -f2- -d ' ' --complement Feb Feb Feb Feb Feb
5文字目〜7文字目までを取り出す
twinbird@:~$ tail -n 5 /var/log/syslog.1 | cut -c 5-7 12 12 12 12 12
ふむ.awkとかなしでもそれなりにやれるもんなんですね.