Takuya Miyashita
This site
Web
Start:
*awk メモ [#yd994133]
#contents
awk は AWK という言語らしい.~
列ごとに変数が並んだファイルを手早く処理したいときに便利.~
~
**列ごとに値を抽出 [#u6e7a758]
下記のようなファイルを仮定する。
## foobar.txt, $x, $y, $a, $z
x1, y1, a1, z1,
x2, y2, a2, z2,
x3, y3, a3, z3,
...
この並びのファイルをaの列だけ取り除くには,
#codeprettify(lang-awk){{
awk -F',' 'NR>1 {print $1 $2 $4}' foobar.txt > output.txt
}}
とする.ここで, -F','はセパレータが「,」であること,NRの...
~
~
**最大値・最小値の抽出 [#gd7c8518]
上記のファイル形式で,zの最大値・最小値を抽出することを考...
全ての行に対して,大小判定を行うようにすればOK.
#codeprettify(lang-awk){{
#初期値(99999)は都合に応じて変更する
#最小値
awk -F',' 'BEGIN{min=99999} {if (min>$4) min=$4} END {pri...
#最大値
awk -F',' 'BEGIN{max=-99999} {if (max<$4) max=$4} END {pr...
}}
初期値を設定しておかないと,全てが0以上または0以下の場合...
printfで出力のフォーマットも指定できる.~
~
~
**NaNのある行を取り除く(isnan的な) [#z8852e64]
awkでNaNを検出して,該当する行全体を除いたファイルを作成す...
まず,下記のようなfoobar.datを仮定する.
1 1 5.000
1 2 1.000
1 3 NaN
2 1 3.000
2 2 NaN
2 3 4.000
ここから,3列目にNaNのある行だけ除いて,新たにファイルを作...
#codeprettify(lang-awk){{
awk '!/NaN/{print $0}' foobar.dat > foo.dat
}}
とする.生成されたfoo.datは下記の通り.
1 1 5.000
1 2 1.000
2 1 3.000
2 3 4.000
NaNのない行だけ抜き出すことができた.~
~
~
**行指定 [#pb7a4e56]
#codeprettify(lang-awk){{
awk 'NR==1,NR==5 {print $1 $2}' foobar.txt
}}
とすると,1行目から5行目までを print することになる.~
確認やテストを実行する時に使える.~
~
~
** n 列目の文字が hoge になっている行だけを抽出 [#p337da07]
1 列目が hoge になっている行だけを抜き出す場合.
#codeprettify(lang-awk){{
awk '$1 == "hoge" {print}' foobar.txt
}}
~
1 列目が hoge になっている行の 2,3 列目を抜き出す場合.
#codeprettify(lang-awk){{
awk '$1 == "hoge" {print $2, $3}' foobar.txt
}}
End:
*awk メモ [#yd994133]
#contents
awk は AWK という言語らしい.~
列ごとに変数が並んだファイルを手早く処理したいときに便利.~
~
**列ごとに値を抽出 [#u6e7a758]
下記のようなファイルを仮定する。
## foobar.txt, $x, $y, $a, $z
x1, y1, a1, z1,
x2, y2, a2, z2,
x3, y3, a3, z3,
...
この並びのファイルをaの列だけ取り除くには,
#codeprettify(lang-awk){{
awk -F',' 'NR>1 {print $1 $2 $4}' foobar.txt > output.txt
}}
とする.ここで, -F','はセパレータが「,」であること,NRの...
~
~
**最大値・最小値の抽出 [#gd7c8518]
上記のファイル形式で,zの最大値・最小値を抽出することを考...
全ての行に対して,大小判定を行うようにすればOK.
#codeprettify(lang-awk){{
#初期値(99999)は都合に応じて変更する
#最小値
awk -F',' 'BEGIN{min=99999} {if (min>$4) min=$4} END {pri...
#最大値
awk -F',' 'BEGIN{max=-99999} {if (max<$4) max=$4} END {pr...
}}
初期値を設定しておかないと,全てが0以上または0以下の場合...
printfで出力のフォーマットも指定できる.~
~
~
**NaNのある行を取り除く(isnan的な) [#z8852e64]
awkでNaNを検出して,該当する行全体を除いたファイルを作成す...
まず,下記のようなfoobar.datを仮定する.
1 1 5.000
1 2 1.000
1 3 NaN
2 1 3.000
2 2 NaN
2 3 4.000
ここから,3列目にNaNのある行だけ除いて,新たにファイルを作...
#codeprettify(lang-awk){{
awk '!/NaN/{print $0}' foobar.dat > foo.dat
}}
とする.生成されたfoo.datは下記の通り.
1 1 5.000
1 2 1.000
2 1 3.000
2 3 4.000
NaNのない行だけ抜き出すことができた.~
~
~
**行指定 [#pb7a4e56]
#codeprettify(lang-awk){{
awk 'NR==1,NR==5 {print $1 $2}' foobar.txt
}}
とすると,1行目から5行目までを print することになる.~
確認やテストを実行する時に使える.~
~
~
** n 列目の文字が hoge になっている行だけを抽出 [#p337da07]
1 列目が hoge になっている行だけを抜き出す場合.
#codeprettify(lang-awk){{
awk '$1 == "hoge" {print}' foobar.txt
}}
~
1 列目が hoge になっている行の 2,3 列目を抜き出す場合.
#codeprettify(lang-awk){{
awk '$1 == "hoge" {print $2, $3}' foobar.txt
}}
Page:
Edit with a page name which already exists