フィールド


UNIX ではフィールドを使っていろいろとできるようなので、ちょっとだけ調べてみた。

フィールドとは

テキストファイルの
一つの行のなかの
スペース等で区切られた各パーツ

のことらしい。

無謀にも awk というプログラミング言語で小さなスクリプトをつくってみます。

------------------------------------------

ls コマンドで一覧表示させた後、スクリプトを使ってそのディレクトリに含まれる各ファイルのバイト数の合計を表示する。

(バイト数は5番目のフィールドに表示される)

$vi total_awk

として、以下のテキストを作成する。

------------------------------------------

#!/usr/bin/awk -f
{total += ($5 / 1024)}
END {print "φ(-_-) . . . \nfloppy size : 1440kB\ntotal(kB) = "total}

( END { から "total} までは 一行で記述 )

------------------------------------------

1行目の #!/usr/bin/awk は、awk を起動させるための定義文。

-f は処理の内容を読み込むためのオプション。

2行目の { と } の間に処理の内容を書く。

$5 は5番目のフィールドをあらわす。$ の後の数字がフィールドナンバー(ただし $0 は行全体を意味する)。

($5 / 1024) とあるのは、バイト単位をキロバイト単位に変換するため(1024 で除算)。

total += は算術演算子をつかって右辺の合計をだし、それを左辺 - total - に代入。

END { . . . } の中身は awk の処理後に実行される(プリント文が多い)。

print ". . ."total では、まず ". . ." の内容が表示され、つぎに total に代入された数字 - この場合は合計 - が表示される。

\n は改行文字であり、出力時に3行にわけて表示する。

(φ はギリシャ文字なので 'ふぁい'を漢字変換させれば φ になるヨ。)

書き込みが終わったら実行可能ファイルにするため、

$chmod 755 total_awk

と打ち込む。

------------------------------------------

データのバックアップに使っているフロッピーで残量の余裕があるかを調べる。

使いかたは、

(フロッピーが、すでにマウントされているとして)

次のようにコマンドを打ち込む。

$ls -l /mnt/floppy | ./total_awk

下のように画面に表示されるはずである。

φ(-_-) . . .
floppy size : 1440kB
total(kB) = XXX.XX

(スクリプトのなかに絵文字をツッコムって - けっこう - おもしろい)

(参考)
awk の manpage からの書き抜き

option -f
Program text is read from file instead of from the command line.

Long statements can be continued with a backslash,\.

Regular expressions: /reglex/

^ matches the front of a string.

$ matches the back of a string.


きょうの UNIX