Linux入門⑤

●指定した文字列を取り出す
◎grepコマンド

grep 文字列 ファイル名

→第1引数で指定した文字列を含む行を、第2引数のファイルから取り出します

 ex.「/etc/services」から、文字列「www」を含む行を取り出す
  grep www /etc/services

 ex.「/etc/services」から、文字列「www」と「tcp」の両方を含む行を取り出す
  grep www /etc/services | grep tcp



●フィルタコマンド
→パイプ機能でコマンドを組み合わせる際、2番目以降のコマンドを
 「フィルタコマンド」といいます。



◎wcコマンド
→行数、単語数、バイト数をカウントする

 wc ファイルパス
 →「行数」、「単語数」、「バイト数」、「ファイル名」の順に表示する

 -l オプション
 →行数のみを表示する

 -w オプション
 →単語数のみを表示する

 ex.
  ls | cat | wc -l

※単語と単語の間にスペースがあると、別な単語と判断します。



◎uniqコマンド
→重複行を取り除く

 ex.
  uniq list.txt

※uniqコマンドは、隣接した重複行のみを削除し、
 離れた位置にある重複行は削除しません。

 -c オプション
 →重複行の数を表示します。

 ex.
  sort list.txt | uniq -c



◎sortコマンド
→ファイルの行を並び替える

 ex.ソート後、重複行を削除する

  sort list.txt | uniq

※ソートしてから、uniqで重複行削除すれば、
 正しく重複行を削除できます。

 -u オプション
 →重複行を非表示にします

  sort -u list.txt   ↑の例(sort list.txt | uniq)と同じ操作


 -n オプション
 →数値の順のソート

 -r オプション
 →降順に表示する

  ex.重複行のカウント数を降順に上位5件表示する

   sort list.txt | uniq -c | sort -nr | head -n 5



◎nkfコマンド
→文字コードを変換する



◎iconvコマンド
→文字コードを変換する

 ex. sample.logをeucjpとみなし、utf8へ変換する
 
   iconv -f eucjp -t utf8 sample.log


◎unix2dosコマンド
→改行コードを変換する

  ☆UNIX 形式から Windows(DOS) 形式にする
  unix2dos [file]



◎dos2unix
→改行コードを変換する

 ☆Windows(DOS) 形式から UNIX 形式にする
 dos2unix [file]



◎odコマンド
→ファイルの内容を16進数や8進数でダンプする



◎sedコマンド
→指定したルールに従って、文字列の置換/追加/削除などを行う



◎teeコマンド
→標準入力から受け取ったデータを標準出力及び
 引数で指定したファイルの両方に出力します。

 ex.
 ls *.html | tee result.txt


 ☆リダイレクトすると、同じ内容のファイルを2つ作成する
 ls *.html | tee result.txt > result_tmp.txt


 ☆実行結果をファイルに保存しつつ、別の処理を行う
 sort list.txt | uniq -c | sort -nr | tee result.txt | head -n 5