[KONY.NET] タグ「awk」による検索結果

[Perl]標準出力を加工する

カテゴリ:

標準出力を加工する方法です。

例えば、vmstatは時刻が表示されないため、
vmstat -n 1の標準出力の先頭に常に時刻を
表示させてみます。

■Perl


open(FH, "vmstat -n 1 |");
while($x = ) {
        ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time());
        printf("%02d:%02d:%02d %s",$hour,$min,$sec,substr($x,0));
}

■gawk


#!/bin/sh
vmstat -n $* | gawk '{printf("%s %s\n", strftime("%H:%M:%S"),$0)}'

さらに、Perlの場合は、先頭に、


$|=1;

を追加して、バッファリングをOFFにすれば、
tail -f ですぐ確認できます。
バッファリングが有効だと1秒おきにvmstatを出力しても
ファイルへは1秒おきに出力されません。
この場合、tail -f などの確認がしづらくなります。

上記スクリプトを通して実行した vmstat -n 1 の出力結果は以下のとおりです。


04:40:47 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
04:40:47  r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
04:40:47  0  0      0 7926776  64156  97868    0    0    14     7  164    49  0  0 100  0
04:40:48  1  0      0 7926776  64156  97868    0    0     4     4  176    40  0  0 100  0
04:40:49  0  0      0 7926776  64156  97868    0    0     4     4  165    34  0  0 100  0

[awk]ファイルの○行目を表示

カテゴリ:

Perl使いなのですぐPerlにたよっちゃうんだけど、
やっぱりちょっとしたことをスマートにやるにはawkが有効なんですね。

■ファイルの中身を表示

$ awk "{print}" sample.txt

■ファイルのm行目を表示

$ awk "NR==m" sample.txt

■ファイルのm行目からn行目までを表示

$ awk "NR==m , NR==n" sample.txt

※"NR>=m , NR<=n"ではない

■ファイルのm行目以降(最後まで)を表示

$ awk "NR>=m" sample.txt

Twitter

New Comment

Tag Cloud

広告

広告

Calendar