テキスト処理
用途
コマンド
測定
抽出 grep
grep [オプション] '検索パターン' [ファイル]
- 実行例、指定のIPの抽出
grep 210.154.***.*** ファイル名
- -i: 大文字小文字無視
# grep -i DoCuMeNTRooT conf/*.conf conf/007716.com.conf: DocumentRoot /www/html/007716A/
- -v: 検索できなかった行を表示 (invert)
# grep -v ' ' conf/*.conf (半角スペースが入っていない行の検索) conf/007716.com.conf:</VirtualHost>
- -n: 行番号表示 (number)
# grep -n DocumentRoot conf/httpd.conf 75:DocumentRoot "/www/html"
- -l: ファイル名のみ表示 (list)
# grep -l DocumentRoot conf/*.conf conf/007716.com.conf conf/0120001311.com.conf conf/0120006161.com.conf
- パターンで始まる
^パターン指定
- パターンで終わる
パターン指定$
行数表示 wc
wc -l
- wc -w 単語数表示
- wc -c 文字数表示
順序化
sort
- 数値対応(標準はテキスト順序)
sort -n
- 逆順
sort -v
- 順序キー指定
sort -k キー番号
重複消去
uniq
同一行計数
uniq -c
編集
sed
- パターン編集
s/検索パターン/置換パターン/[gi]
- gなし: 1行1回だけ置換
- gあり: 1行複数回置換
- i: 大文字・小文字の無視
awk
- テキスト抽出
awk '{ print $3 }' 3番目のフィールドを出力
head
- 頭10行を表示
- head -n 行数指定
tail
- 終10行を表示
- tail -n 行数指定
- tail -f 終了せずに継続表示
合わせ技
- パイプ記号「|」(Shift+\)を使ってテキスト処理加工
- 処理1 | 処理2 | 処理3 | 処理4
perl処理
- 複雑な処理
- パターン抽出
if (/検索1(抽出2)検索3(抽出4)検索5/) { 抽出2=$1; 抽出4=$2; }
- 条件判断
if (条件1) {処理1} elsif (条件2) {処理2} else {処理3}
- 配列・連想配列
my @array; $array[0]=0; $array[1]=2 $array[3]=4; my %hash; $hash{'aaa'}=1; $hash{'bbb'}
- 各行処理
perl -e 'while(<>) { 処理 }'
または
perl -ne '処理'
- 各行の処理内容を表示する場合は
perl -pe '処理'
実行例
ログイン回数
# last | sed 's/ .*//' | sort | uniq -c 1 2 nonaka 2 reboot 6 root 1 wtmp