ファイルの合計サイズを求める
$ls -la | awk ' {x += $5}; END {print x}'
lsの結果の5番目(バイト数)を順番に足して最後に表示するというプログラム。
OSによっては、バイト数の表示位置が変わることがあるので注意
wc -c * | awk '$2~/合計/ {print $1}'でも良さそうだが、2バイト文字が入ると
どうも上手くいかない。"合計"の部分が、英字表記なら上手くいく。
ファイルの合計ステップ数を求める
$wc -l *.sh | awk '{x += $1}; END {print x/2}'
こんなものが、今時必要になるかは疑問だが、シェル等のステップ数を求める方法。
Linux系のwcだと、最後に合計行が入るので2で割っている。
solaris等でwcをしたら、最後に合計はなかったような・・・。(未確認)
入力データ中のn文字以上の行を取り出す
$awk 'length($0) > n' hoge.dat
ログの解析の時に、微妙に役に立つことがある。
$0で行全体が対象になるので、項目指定の時は$nで使用すること。
多分、他のコマンドと併用することになるでしょう。
ファイル中の特定のカラムの数字がn以上の行を取り出す
cat <span style="font-style:italic;">hoge.txt</span> | awk ' $2 > 100 '
例えば、このようなフォーマットだと
yahoo.co.jp 14000000
google.co.jp 3800000
fireking.jp 38
上記二件だけ出てくる。
カンマ区切りの場合だと、すこし工夫が必要
ファイルの件数を数える
$ls | awk ' { x += 1} END { print x }'
ファイル数を数えます。
⇒ls | wc 使えって
特定の文字列を置換する
$awk '{sub(/-/,","); print $1,$4}'
"-"を","に置換
区切り文字の変更
$awk -Fc
cの部分に、任意の区切り文字をセットする