Personal tools
You are here: Home ブログ 井上 「Unixコマンド生活実践」課題の解答
« December 2010 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Recent entries
Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23
Herokuの発音 inoue 2010-12-20
雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18
IPA未踏のニュース inoue 2010-12-15
労基法とチキンゲーム inoue 2010-12-06
フロントエンドエンジニア inoue 2010-12-03
ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25
技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22
RESTの当惑 inoue 2010-11-22
「プログラマのためのUXチートシート」を作りました inoue 2010-11-19
「ビューティフルコード」を読みました inoue 2010-11-16
Categories
カテゴリなし
 
Document Actions

「Unixコマンド生活実践」課題の解答

解答をすっかり忘れていました。

1 入力(ファイルなど)から空行を除いた出力をする方法

grep -v '^$'

2 空白文字(とりあえずスペース文字とタブ文字だけでもよい)だけの行も空行と見なして、空行を除いた出力をする方法

grep -v '^ *$'

タブ文字は、とツッコミが入りそうですが、grepでやるなら

grep -v '^[[:space:]]*$'

こういうのは覚えていないので、awkでやるかもしれません。

awk '!/^[ \t]*$/{print}'

3 あるディレクトリの下の全てのファイルに書かれた Linux の文字列を GNU/Linux に置き換える方法(ただし既存のGNU/Linuxはそのまま)

for f in `find . -type f`; do mv $f $f.bak; sed 's|Linux|GNU/Linux|g' $f.bak > $f; done
してから.bakファイルを削除

bakファイルが元からある、後で間違って削除するかもしれない、というツッコミがあるかもしれません。拡張子変えてもいいですし、forの中で$f.bakを消してもいいです。その辺は状況を見て臨機応変にやります。

もっと深刻なのは上のスクリプトでは、GNU/LinuxがGNU/GNU/Linuxになることです。

sed 's|GNU/GNU/Linux|GNU/Linux|g'

とでもすればよいでしょう。手抜きですが、考える前に手を動かすのがシェルスクリプトです。

4 これから行う操作で変更されるファイル一覧を知る方法 (date(1)コマンドで現在時刻を調べるより簡易な方法があります)

以下のような答えを想定して作った問題でした。

touch /tmp/now
find . -newer /tmp/now

5 apacheの標準的なアクセスログから、最もアクセス数が多いリクエストURLを求める方法

awk '{print $7}' access_log |sort|uniq -c|sort -rn
の出力を適当なページャに渡す

6 apacheの標準的なアクセスログから、レスポンスのバイト数の平均を求める方法

awk '{sum+=$10}END{print sum/NR}' access_log

ログの中でカラムの番号を数えるのが一番時間がかかります。

7 /etc/passwdファイルに重複ユーザがいないかを確認する方法

awk -F: '{print $1}' /etc/passwd|sort|uniq -c|sort -n
で目grep

重複ユーザがあまりいない前提なので、ページャに渡すまでもありません。出力の最後だけ目grepします。

8 CSVフォーマットのユーザ名簿の先頭カラムにメールアドレスがある時、/etc/passwdに存在しないユーザを求める方法

{ awk -F: '{print $1}' /etc/passwd; awk '{print $1}' /tmp/input.csv; } |sort|uniq -c|sort -n

後半、awkばっかりでした。

おまけ問題は変だったので削除しました。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/unix-operation2-answer/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.