2005年10月04日

Linuxコマンド 覚書

Linuxサーバ Hacks Unix,Linuxで使えるコマンドラインの覚書です。

使えそうなコマンドがあれば、随時更新していこうと思います。

もし、間違いなどありましたら、連絡いただけると助かります。

申し訳ないですが、コマンドを実行した結果は保証しません。ご自分の責任でお願いします。 <_(_ _)_>

覚書

目次

  1. アクセスログの中からトップ10のファイル名を表示する
  2. find で検索してマッチしたファイルを cp する
  3. find で検索して、条件にマッチしたファイルだけ、ファイル名を変更する
  4. 正規表現で検索して、マッチした部分だけを表示する

アクセスログの中からトップ10のファイル名を表示する

[hamasyou]# for x in `cat access_log | awk '{print $7}' | sort | uniq`; do \ grep $x access_log | wc -l | tr -d '\n'; \ echo " $x"; \ done | sort +0 -rn | head -10
 for 文は「for 変数 in 単語リスト; do コマンド done」の構文で使います。 変数はコマンドのところで使えます。$変数 のようにすると呼び出すことができます。

 「` `」で囲まれた部分は、囲まれた中をコマンドとして実行し、その結果を返すものです。 access_log を開いて、その中の空白で区切られた単語の区切りの7番目をawkによって抽出し( awk '{print $7}')、その結果を一意なものにしています。

 上記のコマンドによってできた単語リスト(ここでは、ファイル名のリストを取得しているつもり)を繰り返し処理していきます。最初に、取得したファイル名を含む行数を「grep $x access_log | wc -l 」で取り出します。 wc の結果には改行が含まれるので 「tr -d '\n'」で改行を削除しています。「tr」コマンドの -d オプションは、その次にくる文字を削除するオプションです。オプションをつけずに2つ渡すと置換になります。
「tr 'GET' 'POST'」とすると、最初の引数の各文字に対応する第2引数の文字が置換されます。つまり、 文章中に HTTP とある場合、この置換をかけると HSSP と変換されてしまいます。

 ファイル中に現れる行数を最初に出力した後で、 echo でファイル名を出力しています。forループを抜けた後、これまで処理した結果を sort しています。 +0 オプションは、1番目の単語でソートするオプションです。 +3 とすると 4単語目でソートすることになります。 -r オプションは、逆順(降順)でソートするオプションです。 -n は、ソート項目を数字として判断するオプションです。

 最後に、「head -10 」として 最初の10件を取り出しています。
[参考] Linuxサーバ Hacks P.16

find で検索してマッチしたファイルを mv する

[hamasyou]# for x in `find . | grep ".*.txt"`; do \ echo "$x" "/home/hamasyou/$x"; \ done | xargs -n2 cp

 「find」コマンドで、カレントディレクトリから .txtで終わるファイルを見つけ出します。見つかったファイルを echo で 元のファイル名 移動先 というように出力します。この結果を xargs で取り込み、 -n数字 オプションによって引数を2つとるようにします。

これを cp コマンドに引き渡すことで、echo で出力した場所にファイルをコピーすることができました。

find で検索して、条件にマッチしたファイルだけ、ファイル名を変更する

[hamasyou]# find . | grep ".*.java" | sed -n 's/\(.*\)\.java/mv & \1.vm/p' |sh

 find と grep で、拡張子が .java のファイルを検索します。マッチしたファイル名を sed に送り込み、/s 関数を使ってファイル名を置換したものを mv コマンドに見えるように出力します。その結果を パイプでつないで sh に渡します。

 sed の -n オプションは読み込んだ行を表示しないというオプションです。 s//p 関数で .java 拡張子を持つファイル名を、 「mv 読み込みファイル名 マッチした部分.vm」 という出力になるように置換して、 p コマンドで出力しています。

 s関数中にある & は 読み込んだファイル名を返す参照変数です。
[参考] 新TheUNIX SuperText[上]

正規表現で検索して、マッチした部分だけを表示する

[hamasyou]# find . | grep '.*.java' | xargs cat | sed -n 's/.*\(キーワード\).*/\1/p'

 find と grep で拡張子が .java のファイルを取得し、ファイルの中身を cat で表示します。その結果を sed に送り、キーワードのみを後方参照として取得できるようにしておきます。 s//p 関数で中で \1 を使ってマッチしたキーワードのみを出力するようにしています。



▼ この記事に関係のあるサイトはこちら

TrackbackURL:【http://hamasyou.com/cgi-bin/mt-tb.cgi?tb_id=301】
他の記事も読んでいきませんか?

最後までお読みいただいてありがとございます。フィードバックお待ちしています。

TrackBack
You Tube
引用: http://yulip.com/sitemap.php You Tube
ぶろぐ名: You Tube
日時: 2007年07月03日 20:59
you tube
引用: http://homepage.mac.com/you__tube/youtube.html you tube
ぶろぐ名: you tube
日時: 2007年09月24日 08:43
コメントを投稿する











日本語を入力しないとエラーになります。



authentication
すべて 小文字の英語です。
※ 表示される画像に記述されている文字を入力してください。
powered by Image Verification

送信情報を保存しますか? 
HOMEに戻る
月別書評
本の種類
同じカテゴリ内の記事
今日のおすすめ
[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用
[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用
実際の運用に基づいたインフラ構築の実践ノウハウが満載
最近買った本
オブジェクト指向入門 第2版 方法論・実践
オブジェクト指向入門 第2版 方法論・実践
初めてのRuby
初めてのRuby
[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用
[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用
上流工程UMLモデリング 業務・要求分析からプログラミングへのモデル化技法
上流工程UMLモデリング 業務・要求分析からプログラミングへのモデル化技法
UMLモデリング入門 本質をとらえるシステム思考とモデリング心理学
UMLモデリング入門 本質をとらえるシステム思考とモデリング心理学
Rubyクックブック ―エキスパートのための応用レシピ集
Rubyクックブック ―エキスパートのための応用レシピ集
Code Craft ~エクセレントなコードを書くための実践的技法~
Code Craft ~エクセレントなコードを書くための実践的技法~
ジェネレーティブプログラミング
ジェネレーティブプログラミング
インターフェイス指向設計 アジャイル手法によるオブジェクト指向設計の実践
インターフェイス指向設計 アジャイル手法によるオブジェクト指向設計の実践
販売管理システムで学ぶモデリング講座
販売管理システムで学ぶモデリング講座
Railsレシピブック 183の技
Railsレシピブック 183の技
ビューティフルコード
ビューティフルコード
UMLモデリング入門 本質をとらえるシステム思考とモデリング心理学
UMLモデリング入門 本質をとらえるシステム思考とモデリング心理学
Search


powered bypoweredby