トップページunix
1001コメント297KB

シェルスクリプト総合 その22

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2013/11/01(金) 07:58:50.52
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/
  http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その21
http://toro.2ch.net/test/read.cgi/unix/1352973453/
0157名無しさん@お腹いっぱい。2014/01/25(土) 13:07:32.99
>>155
他が問題ない速度なら変換する部分だけをperlに置き換えればいいでしょ
0158名無しさん@お腹いっぱい。2014/01/25(土) 13:08:25.67
>>155
>grep "+++ Statistics Dump +++" named.stats | awk 'BEGIN{FS="("}{print $2}' | sed 's/)//' > days.txt

せっかく awk 使っているんだからこれで↓

awk -F'[()]' '/^\+\+\+ Statistics Dump \+\+\+/{print $2}' named.stats > days.txt
0159名無しさん@お腹いっぱい。2014/01/25(土) 13:20:44.21
>>155
perl でやるならこれで↓

perl -ne 'if(/^\+\+\+ Statistics Dump \+\+\+ \((\d+)\)$/){print localtime($1) . "\n";}' named.stats > days.txt
0160名無しさん@お腹いっぱい。2014/01/25(土) 13:26:11.86
>>158
awk には strftime() が使えるからこれで↓

awk -F'[()]' '/^\+\+\+ Statistics Dump \+\+\+/{print strftime("%Y/%m/%d %H:%M:%S",$2)}' named.stats

# もしかすると strftime() は GNU awk だけでしか使えないかも…
■ このスレッドは過去ログ倉庫に格納されています