その他/Macで実験結果をまとめる
をテンプレートにして作成
開始行:
*はじめに [#nb6baa4e]
Macで実験した結果をまとめるときに使えるコマンドを紹介しま...
環境はOS X 10.8.2 Mountain Lion,ターミナルのシェルは標準...
使用例の $ はbashのコマンド・プロンプトを表しています.(...
それぞれのコマンドの使い方は,''man''コマンドで調べてくだ...
#geshi(sh){{
$ man コマンド名
}}
'''例''':cat コマンドの使い方を調べる.
#geshi(sh){{
$ man cat
}}
*目次 [#e0ea41c5]
#contents
*Tips [#g9e82f13]
**コマンド [#t3808664]
***空のファイルを作成する [#xb9012af]
''touch''コマンド
#geshi(sh){{
$ touch ファイル名
}}
'''例''':result.txt という名前のからのファイルを作成する.
#geshi(sh){{
$ touch result.txt
}}
***文字列を出力する [#adc3fead]
''echo''コマンド
#geshi(sh){{
$ echo 文字列
}}
'''例''':done. と出力する
#geshi(sh){{
$ echo "done."
}}
***ファイルの内容を出力する [#eb5e394a]
''cat''コマンド
#geshi(sh){{
$ cat ファイル名1 ファイル名2 ...
}}
ファイル名を指定しないときは,標準入力が対象となります.
'''例''':ファイル foo とファイル bar の内容を続けて出力...
#geshi(sh){{
$ cat foo bar
}}
'''例''':ファイル result.txt の内容を行番号付きで出力す...
#geshi(sh){{
$ cat -n result.txt
}}
***ファイルの先頭を出力する [#le3bbc74]
''head''コマンド
#geshi(sh){{
$ head -行数 ファイル名
}}
ファイル名を指定しないときは,標準入力が対象となります.
'''例''':ファイル result.txt の最初の20行だけを出力する.
#geshi(sh){{
$ head -20 result.txt
}}
***ファイルの末尾を出力する [#v3f3c71f]
''tail''コマンド
#geshi(sh){{
$ tail -行数 ファイル名
}}
ファイル名を指定しないときは,標準入力が対象となります.
'''例''':ファイル result.txt の末尾20行だけを出力する
#geshi(sh){{
$ tail -20 result.txt
}}
***指定した文字列を含む行だけを出力する [#j3443a19]
''grep''コマンド
#geshi(sh){{
$ grep 文字列 ファイル名
}}
ファイル名を指定しないときは,標準入力が対象となります.
'''例''':ファイル result.txt の中で # を含む行だけを出力...
#geshi(sh){{
$ grep '#' result.txt
}}
***指定した正規表現を含む行だけを出力する [#r316db01]
''egrep''コマンド
#geshi(sh){{
$ egrep 正規表現 ファイル名
}}
ファイル名を指定しないときは,標準入力が対象となります.
'''例''':ファイル result.txt の中で行の先頭に # を含まな...
#geshi(sh){{
$ egrep -v '^#' ファイル名
}}
***指定した文字列を置換する [#rf2bb250]
''sed''コマンド
#geshi(sh){{
$ sed 's/置換前文字列/置換後文字列/g' ファイル名
}}
'''例''':ファイル result.txt に含まれる文字列 XML を文字...
#geshi(sh){{
$ sed 's/XML/xml/g' result.txt
}}
***ファイルの行数を調べる [#fcf94af9]
''wc''コマンド
#geshi(sh){{
$ wc -l ファイル名
}}
ファイル名を指定しないときは,標準入力が対象となります.
'''例''':ファイル resutl.txt の行数を調べる
#geshi(sh){{
$ wc -l result.txt
}}
***CSVファイルの指定した列だけを出力する [#r7ece8b5]
''cut''コマンド
#geshi(sh){{
$ cut -d, -f列番号 ファイル名
}}
ファイル名を指定しないときは,標準入力が対象となります.
-dオプションは区切り文字を表します.
'''例''':ファイル result.csv の2列目から4列目までを出力...
#geshi(sh){{
$ cut -d, -f2-4 resutl.csv
}}
***CSVファイルを指定した列で並べ替える [#c709855b]
''sort''コマンド
#geshi(sh){{
$ sort -t, -kキー列番号 ファイル名
}}
'''例''':ファイル result.csv を2列目の辞書順に並べ替える.
#geshi(sh){{
$ sort -t, -k2 result.csv
}}
'''例''':ファイル result.csv を3列目の値の昇順に並べ替え...
#geshi(sh){{
$ sort -t, -k3 -n result.csv
}}
'''例''':ファイル result.csv を1列目の値の降順に並べ替え...
#geshi(sh){{
$ sort -t, -k1 -n -r result.csv
}}
***CSVファイルの指定した列の合計を求める [#ea383488]
''awk''コマンド
#geshi(sh){{
$ awk -F, 'BEGIN{s=0}{s+=$列番号}END{print s}' ファイル名
}}
'''例''':ファイル result.csv の2列目の値の合計を求める
#geshi(sh){{
$ awk -F, 'BEGIN{s=0}{s+=$2}END{print s}' result.csv
}}
***CSVファイルの指定した列の平均を求める [#j017e18f]
''awk''コマンド
#geshi(sh){{
$ awk -F, 'BEGIN{s=c=0}{sum+=$列番号;c++}END{print s/c}' ...
}}
'''例''':ファイル result.csv の3列目の値の合計を求める
#geshi(sh){{
$ awk -F, 'BEGIN{s=c=0}{s+=$3;c++}END{print s/c}' result....
}}
**シェル [#tcc14239]
***規則性のある名前のファイルをまとめて指定する [#i0302738]
ワイルドカードを使います.
-''*'' (アスタリスク)0文字以上の任意の文字列
-''?'' (クエスチョン・マーク)任意の1文字
-''[文字列]'' (角かっこ)文字列に含まれる文字のいずれか
-''[!文字列]'' (角カッコとエクスクラメーション・マーク...
例:resultで始まり,拡張子が.txtであるファイルのリストを...
#geshi(sh){{
$ ls result*.txt
}}
例:result0.txtからresult9.txtのファイルの内容を続けて出...
#geshi(sh){{
$ cat result[0-9].txt
}}
***複数の処理を連続して行う [#v892108c]
セミコロン '';'' で区切ります.
#geshi(sh){{
処理1; 処理2
}}
例:HelloとWorldを連続して出力する
#geshi(sh){{
$ echo "Hello"; echo "World"
Hello
World
}}
***ある処理の出力を次の処理の入力にする [#u4fbfd03]
パイプ ''|'' で区切ります.
#geshi(sh){{
$ 処理1 | 処理2
}}
例:ファイル result.txt の # を含む行だけを出力し,行番号...
#geshi(sh){{
$ grep '#' result.txt | cat -n
}}
***処理の結果をファイルに書き込む [#p9636e40]
リダイレクション ''>''
#geshi(sh){{
$ 処理 > ファイル名
}}
'''例''':ファイル result.txt に行番号を付けて n_result.t...
#geshi(sh){{
$ cat -n result.txt > n_result.txt
}}
***処理の結果をファイルの末尾に追加する [#cb410308]
リダイレクション ''>>''
#geshi(sh){{
$ 処理 >> ファイル名
}}
'''例''':ファイル result.txt の末尾に現在の時刻を追加する
#geshi(sh){{
$ date >> result.txt
}}
***複数のファイルに同じ処理をする [#a65e35c0]
''for''文
#geshi(sh){{
$ for i in ワイルドカードを含むファイル名
> do
> 処理
> done
}}
次のように一行でも書けます.
#geshi(sh){{
$ for i in ワイルドカードを含むファイル名; do 処理; done
}}
'''例''':ファイル名が result で始まり拡張子が .txt であ...
#geshi(sh){{
for i in result*.txt; do echo $i; done
}}
**組み合わせ例 [#y65a2e34]
***指定した文字列を含む行の数を調べる [#t7884e9b]
'''例''':ファイル result.txt の中で,hit という文字列を...
#geshi(sh){{
$ grep hit result.txt | wc -l
}}
***複数のファイルの指定した行だけをまとめて出力する [#u0e...
'''例''':ファイル名が result で始まり拡張子が .txt であ...
#geshi(sh){{
$ for i in result*.txt; do head -10 $i | tail -1; done
}}
***指定した行に指定した文字列を含むファイルの数を調べる [...
'''例''':ファイル名が result で始まり拡張子が .txt のフ...
#geshi(sh){{
$ (for i in result*.txt; do head -10 $i | tail -1 | grep ...
}}
気が向いたら追加します.
終了行:
*はじめに [#nb6baa4e]
Macで実験した結果をまとめるときに使えるコマンドを紹介しま...
環境はOS X 10.8.2 Mountain Lion,ターミナルのシェルは標準...
使用例の $ はbashのコマンド・プロンプトを表しています.(...
それぞれのコマンドの使い方は,''man''コマンドで調べてくだ...
#geshi(sh){{
$ man コマンド名
}}
'''例''':cat コマンドの使い方を調べる.
#geshi(sh){{
$ man cat
}}
*目次 [#e0ea41c5]
#contents
*Tips [#g9e82f13]
**コマンド [#t3808664]
***空のファイルを作成する [#xb9012af]
''touch''コマンド
#geshi(sh){{
$ touch ファイル名
}}
'''例''':result.txt という名前のからのファイルを作成する.
#geshi(sh){{
$ touch result.txt
}}
***文字列を出力する [#adc3fead]
''echo''コマンド
#geshi(sh){{
$ echo 文字列
}}
'''例''':done. と出力する
#geshi(sh){{
$ echo "done."
}}
***ファイルの内容を出力する [#eb5e394a]
''cat''コマンド
#geshi(sh){{
$ cat ファイル名1 ファイル名2 ...
}}
ファイル名を指定しないときは,標準入力が対象となります.
'''例''':ファイル foo とファイル bar の内容を続けて出力...
#geshi(sh){{
$ cat foo bar
}}
'''例''':ファイル result.txt の内容を行番号付きで出力す...
#geshi(sh){{
$ cat -n result.txt
}}
***ファイルの先頭を出力する [#le3bbc74]
''head''コマンド
#geshi(sh){{
$ head -行数 ファイル名
}}
ファイル名を指定しないときは,標準入力が対象となります.
'''例''':ファイル result.txt の最初の20行だけを出力する.
#geshi(sh){{
$ head -20 result.txt
}}
***ファイルの末尾を出力する [#v3f3c71f]
''tail''コマンド
#geshi(sh){{
$ tail -行数 ファイル名
}}
ファイル名を指定しないときは,標準入力が対象となります.
'''例''':ファイル result.txt の末尾20行だけを出力する
#geshi(sh){{
$ tail -20 result.txt
}}
***指定した文字列を含む行だけを出力する [#j3443a19]
''grep''コマンド
#geshi(sh){{
$ grep 文字列 ファイル名
}}
ファイル名を指定しないときは,標準入力が対象となります.
'''例''':ファイル result.txt の中で # を含む行だけを出力...
#geshi(sh){{
$ grep '#' result.txt
}}
***指定した正規表現を含む行だけを出力する [#r316db01]
''egrep''コマンド
#geshi(sh){{
$ egrep 正規表現 ファイル名
}}
ファイル名を指定しないときは,標準入力が対象となります.
'''例''':ファイル result.txt の中で行の先頭に # を含まな...
#geshi(sh){{
$ egrep -v '^#' ファイル名
}}
***指定した文字列を置換する [#rf2bb250]
''sed''コマンド
#geshi(sh){{
$ sed 's/置換前文字列/置換後文字列/g' ファイル名
}}
'''例''':ファイル result.txt に含まれる文字列 XML を文字...
#geshi(sh){{
$ sed 's/XML/xml/g' result.txt
}}
***ファイルの行数を調べる [#fcf94af9]
''wc''コマンド
#geshi(sh){{
$ wc -l ファイル名
}}
ファイル名を指定しないときは,標準入力が対象となります.
'''例''':ファイル resutl.txt の行数を調べる
#geshi(sh){{
$ wc -l result.txt
}}
***CSVファイルの指定した列だけを出力する [#r7ece8b5]
''cut''コマンド
#geshi(sh){{
$ cut -d, -f列番号 ファイル名
}}
ファイル名を指定しないときは,標準入力が対象となります.
-dオプションは区切り文字を表します.
'''例''':ファイル result.csv の2列目から4列目までを出力...
#geshi(sh){{
$ cut -d, -f2-4 resutl.csv
}}
***CSVファイルを指定した列で並べ替える [#c709855b]
''sort''コマンド
#geshi(sh){{
$ sort -t, -kキー列番号 ファイル名
}}
'''例''':ファイル result.csv を2列目の辞書順に並べ替える.
#geshi(sh){{
$ sort -t, -k2 result.csv
}}
'''例''':ファイル result.csv を3列目の値の昇順に並べ替え...
#geshi(sh){{
$ sort -t, -k3 -n result.csv
}}
'''例''':ファイル result.csv を1列目の値の降順に並べ替え...
#geshi(sh){{
$ sort -t, -k1 -n -r result.csv
}}
***CSVファイルの指定した列の合計を求める [#ea383488]
''awk''コマンド
#geshi(sh){{
$ awk -F, 'BEGIN{s=0}{s+=$列番号}END{print s}' ファイル名
}}
'''例''':ファイル result.csv の2列目の値の合計を求める
#geshi(sh){{
$ awk -F, 'BEGIN{s=0}{s+=$2}END{print s}' result.csv
}}
***CSVファイルの指定した列の平均を求める [#j017e18f]
''awk''コマンド
#geshi(sh){{
$ awk -F, 'BEGIN{s=c=0}{sum+=$列番号;c++}END{print s/c}' ...
}}
'''例''':ファイル result.csv の3列目の値の合計を求める
#geshi(sh){{
$ awk -F, 'BEGIN{s=c=0}{s+=$3;c++}END{print s/c}' result....
}}
**シェル [#tcc14239]
***規則性のある名前のファイルをまとめて指定する [#i0302738]
ワイルドカードを使います.
-''*'' (アスタリスク)0文字以上の任意の文字列
-''?'' (クエスチョン・マーク)任意の1文字
-''[文字列]'' (角かっこ)文字列に含まれる文字のいずれか
-''[!文字列]'' (角カッコとエクスクラメーション・マーク...
例:resultで始まり,拡張子が.txtであるファイルのリストを...
#geshi(sh){{
$ ls result*.txt
}}
例:result0.txtからresult9.txtのファイルの内容を続けて出...
#geshi(sh){{
$ cat result[0-9].txt
}}
***複数の処理を連続して行う [#v892108c]
セミコロン '';'' で区切ります.
#geshi(sh){{
処理1; 処理2
}}
例:HelloとWorldを連続して出力する
#geshi(sh){{
$ echo "Hello"; echo "World"
Hello
World
}}
***ある処理の出力を次の処理の入力にする [#u4fbfd03]
パイプ ''|'' で区切ります.
#geshi(sh){{
$ 処理1 | 処理2
}}
例:ファイル result.txt の # を含む行だけを出力し,行番号...
#geshi(sh){{
$ grep '#' result.txt | cat -n
}}
***処理の結果をファイルに書き込む [#p9636e40]
リダイレクション ''>''
#geshi(sh){{
$ 処理 > ファイル名
}}
'''例''':ファイル result.txt に行番号を付けて n_result.t...
#geshi(sh){{
$ cat -n result.txt > n_result.txt
}}
***処理の結果をファイルの末尾に追加する [#cb410308]
リダイレクション ''>>''
#geshi(sh){{
$ 処理 >> ファイル名
}}
'''例''':ファイル result.txt の末尾に現在の時刻を追加する
#geshi(sh){{
$ date >> result.txt
}}
***複数のファイルに同じ処理をする [#a65e35c0]
''for''文
#geshi(sh){{
$ for i in ワイルドカードを含むファイル名
> do
> 処理
> done
}}
次のように一行でも書けます.
#geshi(sh){{
$ for i in ワイルドカードを含むファイル名; do 処理; done
}}
'''例''':ファイル名が result で始まり拡張子が .txt であ...
#geshi(sh){{
for i in result*.txt; do echo $i; done
}}
**組み合わせ例 [#y65a2e34]
***指定した文字列を含む行の数を調べる [#t7884e9b]
'''例''':ファイル result.txt の中で,hit という文字列を...
#geshi(sh){{
$ grep hit result.txt | wc -l
}}
***複数のファイルの指定した行だけをまとめて出力する [#u0e...
'''例''':ファイル名が result で始まり拡張子が .txt であ...
#geshi(sh){{
$ for i in result*.txt; do head -10 $i | tail -1; done
}}
***指定した行に指定した文字列を含むファイルの数を調べる [...
'''例''':ファイル名が result で始まり拡張子が .txt のフ...
#geshi(sh){{
$ (for i in result*.txt; do head -10 $i | tail -1 | grep ...
}}
気が向いたら追加します.
ページ名: