目次 に戻る

1006 awk intro recode and field

GNU Awk 3.0.6 + multi-byte extension 1.15

レコード と フィールド

前準備

今回は 次の 様に データ を 作成し 試してみよう

Pmt> echo "大山 大三郎 987-5646-1232">test
Pmt> cat test 
大山 大三郎 987-5646-1232

フィールド の 参照

どのようにして参照するか?

Pmt> awk '{ print $2 ,$1, $3 }' test 
大三郎 大山 987-5646-1232
Pmt> awk '{ print $0}' test 
大山 大三郎 987-5646-1232
Pmt> cat test 
大山 大三郎 987-5646-1232
Pmt> awk '{ print $3 ,$2, $1 }' test 
987-5646-1232 大三郎 大山

こういう感じです、今度は 空白を tab に 置き換えた 物を作成してみよう

Pmt> vi test
Pmt> cat test 
大山 大三郎     987-5646-1232
Pmt> sed l test 
\302\347\273\263 \302\347\273\260\317\272\t987-5646-1232$
大山 大三郎     987-5646-1232

文字化け状態では あるが 3つの 部分に わかれている事がわかるでしょう \t の 部分が tab という ことです。そうして

Pmt> cat test 
大山 大三郎     987-5646-1232
Pmt> awk '{print $2}' test 
大三郎
Pmt> awk -F"\t" '{print $2}' test 
987-5646-1232

空白か tab で 区切られた 2番目 は ”大三郎” tab で区切られた 2番目 は ”987-5646-1232”となる 事に 留意されたい。

 awk -F

この場合 ”-F” というもので 区切りを 指定する事を 行っている 通常指 定しない場合は 空白か tab ということに なっているようです

Pmt> awk -F"\t" '{print $2}' test

空白とか tab は一般にデリミタと呼ぶようです、以下の場合

Pmt> echo a b c d | awk 'BEGIN {one = 1; two = 2 }
> { print $( one + two )}'
c
Pmt> echo a b c d | awk '{ print $3}'
c
Pmt> echo a b c d | awk '{ print $(1+2)}'
c

3番目が c ということになります

にゃんたろう 拝!
GNU Awk 3.0.6 + multi-byte extension 1.15
2006年12月26日 (火) 23:30:40 JST 作成


目次 に戻る

Copyright © 2004.-2007. nyantarou All Rights Reserved.