※MACターミナル(BSD系)での動作確認です。

スポンサーリンク

FS:区切り文字の指定

※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-

FSで区切り文字を設定できます。

区切り文字を設定する方法については下記の記事を書いています。
参考:awkで区切り文字がタブ(tab)のファイルを読み込む方法

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
e,awk
f,find
g,awk

下記がサンプルコードになります。

FS = ","としてカンマ区切りのファイルを読み込みます。

そして、1列目と2列目の文字列を連結してprint出力しています。

文字列を連結する方法については下記の記事を書いています。
参考:awkで文字列を連結させる方法

 $ cat sample.awk 
#!/bin/sh
cat in.txt | awk '		
	BEGIN{
		FS = ","
	}
	{
		print $1 $2	
	}
'

下記が実行結果になります。
 $ ./sample.awk 
eawk
ffind
gawk

スポンサーリンク

OFS:print出力時の区切り文字を指定

OFSでprint出力時の区切り文字を指定できます。

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
e awk
f find
g awk

下記がサンプルコードになります。

OFS = ","でprint出力時の区切り文字をカンマ区切りに指定します。

参考:awkのprint出力をタブ区切りにする←デフォルトはスペース区切りになっていることに注意

 $ cat sample.awk 
#!/bin/sh
cat in.txt | awk '		
	BEGIN{
		OFS = ","
	}
	{
		print $1, $2	
	}
'

下記が実行結果になります。
 $ ./sample.awk 
e,awk
f,find
g,awk

NR:読み込んだ行数が格納

NRには読み込んだ行数が格納されます。

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
11
22
33
44
55
66

下記がサンプルコードになります。

NR >= 4{省略}で、4行目以降の行に対して処理を行います。

参考:awkで対象レコード(行)を絞って、フィールド(列)の最大値を算出する

 $ cat sample.awk 
#!/bin/sh
cat in.txt | awk '		
	NR >= 4{
		print $1, $2	
	}
'

下記が実行結果になります。
 $ ./sample.awk 
44 
55 
66 

スポンサーリンク

RSTARTとRSTART: match()の検索結果が格納

match()関数を実行すると、
RSTARTには、検索対象が検出された最初の位置が、
RLENGTHには、検索対象が検索された文字列の長さが格納されます。

参考:awkのmatch()関数の使い方

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
abc12345abc
a6789abc012abc123
 $ cat sample.awk 
 

下記がサンプルコードになります。
#!/bin/sh
cat in.txt | awk '		
	{
		match($0, /[1-9]+/)
		print $0 "の数字は、" RSTART "文字目から" RLENGTH "文字登場します."
	}
'

下記が実行結果になります。
 $ ./sample.awk 
abc12345abcの数字は、4文字目から5文字登場します.
a6789abc012abc123の数字は、2文字目から4文字登場します.

スポンサーリンク