テキスト処理コマンド

テキスト処理用コマンド


head, tail, cut, wc

  • head :  ファイルや標準入力の先頭の方の行を表示.
  • tail    :  ファイルや標準入力の最後の方の行を表示.
  • cut    : ファイルや標準入力中の特定の項目を表示
  • wc     : ファイルや標準入力中の単語の数,行数を数える.
例
$ head -20 /etc/passwd       /etc/passwd の先頭20行を表示
$ tail -10 /etc/passwd       /etc/passwd の終わり10行を表示
# tail -f /var/log/message   /var/log/message の更新をリアルタイムに表示
$ cut -d: -f1 /etc/passwd    /etc/passwd の最初の項目(ユーザ名)だけ表示
$ wc -l /etc/passwd          /etc/passwd の行数を表示

 


sed, awk, grep

  • sed : ファイルや標準入力の行ごとの編集.
  • awk : ファイルや標準入力中の特定の項目を表示.cut より高機能.
           awk  -F" "  '{print $2}'   空白を区切りにして,2番目の項目を出力.
  • grep : ファイルや標準入力から文字を検索.
例
$ sed  s/root/ROOT/g /etc/passwd    /etc/passwd 中のすべてのrootをROOTに換える
$ sed /root/d /etc/passwd           /etc/passwd 中の rootを含む行を削除
$ ps ax | awk -F" " '{print $1}'    プロセス番号のみ表示
$ grep root /etc/passwd             /etc/passwd の root を含む行を表示
$ grep -v root /etc/passwd          /etc/passwd の root を含まない行を表示

  

正規表現  

ワイルドカード(*,?) と混同しないように.

  • * : 直前の文字の0回以上の繰り返し.
  • . : 任意の一文字.
  • ^ : 行頭.
  • $ : 行末.
  • [ ] : [ ] で囲まれたいずれかの文字.
  • \ : 機能のエスケープ.特殊文字の機能を無くす.

    ワイルドカードはシェルが処理してコマンドに渡す.
  正規表現はコマンドが直接処理する. 正規表現の使えるコマンド: grep, sed など

 


演習

  1. 各コマンドの練習(参考書を持っている人は参考書を参照). rfc1392 の一部(ダウンロードして使用)  
    各コマンドの結果を予測しながら,実行してみる. プロンプトが # の場合は root で実行.
     $ head -5 /etc/services
     $ tail  -10  /etc/services
     $ wc  -l  /etc/passwd
     $ sed  s/hacker/HACKER/g  rfc1392
     $ sed  /cracker/d  rfc1392
     $ sed  s/^/#/  rfc1392
     $ cat -n rfc1392 | head  -12 | sed  '1,7d'
     $ grep  hacker  rfc1392 | wc  -l
     $ ps  -ax | grep bash |awk -F" " '{print $1}'
     $ awk  -F":"  '{print  $1}'  /etc/group
     # grep  -v  ^#  /etc/X11/xorg.conf
     # grep  -c  ^#  /etc/inetd.conf
     # grep  ^#  /etc/inetd.conf | wc  -l
     # tail  -f  /var/log/message
     # cut  -d:  -f2  /etc/shadow
  2. 名前が d で終わるプロセスを表示する(重複不可) (ps, awk, grep, sort, uniqを使う)

  3. 全てのコマンドで正規表現が使用できるわけではない.次のうち正規表現として正常に作動するコマンドはどれか?
     $ ls  -ld  ^[Aa].*
     $ ls  -ld  [Aa]*
     $ ls |  grep  ^[Aa].*
    
最後修改: 2014年 04月 18日(Fri) 16:39