write ahead log

ロールフォワード用

cutコマンド[POSIXコマンド]

ここを見ると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とかなしでもそれなりにやれるもんなんですね.