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
●指定した文字列を取り出す
◎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