# | スクリプト | 解説 | |
---|---|---|---|
1 | #! /bin/bash | # | |
2 | # Text analisys | # | |
3 | # | ||
4 | for n in $* | # 引数を順に処理 | |
5 | do | # | |
6 | echo Analisis $n : | # ファイル名を表示 | |
7 | wc $n | | # wc を実行し、awk で表示形式を変更 | |
8 | awk '{printf "\t%5d line %10d word %10d char\n",$1,$2,$3}' | # | |
9 | pr -e8 -t $n | | # pr を用いてタブを複数の空白に変換 | |
10 | awk 'BEGIN{ | # | |
11 | nulline=0; maxline=0; minline=1000; total=0; line=0} | # 統計用変数の初期化 | |
12 | { | # | |
13 | strlen=length($0) ; line=line+1 | # 文字数を strlen, 行数を line とする | |
14 | total=total+strlen | # ファイル全体の総文字数を total とする | |
15 | if (strlen==0) nulline = nulline +1 | # 空行の数を数える | |
16 | if (strlen>maxline) maxline=length($0) | # 1行あたりの最大文字数 maxline とする | |
17 | if (strlen<maxline) minline=length($0) } | # 1行あたりの最小文字数 minline とする | |
18 | END{ | # ファイルを読み終わった時点 | |
19 | printf "\tchar/line 0 (max)\t", maxline | # | |
20 | printf "0 (min)\t", minline | # | |
21 | printf "0 (ave)\t", total/line | # 総文字数 / 行数 をもとめる | |
22 | printf "0 (null)\n", nulline | # | |
23 | }' | # | |
24 | done | # |
$ txtana /etc/httpd/conf/httpd.conf /etc/passwd Analisis /etc/httpd/conf/httpd.conf : 1097 line 5177 word 37427 char char/line 104 (max) 38 (min) 33 (ave) 96 (null) Analisis /etc/passwd : 224 line 339 word 13791 char char/line 107 (max) 95 (min) 60 (ave) 0 (null)