スポンサーリンク

awkのORS変数

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

※MACターミナル(BSD系)での動作確認です。
awkのORS変数で、print出力時の行の区切り文字を設定できます。
デフォルトは改行コードが設定されています。

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

 $ cat in.txt 
a1,a2
b1,b2
c1,c2
d1,d2
e1,e2

下記のように、単に1行ずつ表示させると、改行が入ります。
 $ cat sample0.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		print $0
	}
'

下記が実行結果になります。
 $ ./sample0.awk 
a1,a2
b1,b2
c1,c2
d1,d2
e1,e2

BEGINブロックでORSにカンマを設定しました。
参考:awkで変数の初期化はBEGINブロック内が基本
 $ cat sample.awk 
#!/bin/sh
cat in.txt | awk '		
	BEGIN{
		ORS = ","
	}
	{
		print $0
	}
'

下記が実行結果になります。
 $ ./sample.awk 
a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,

スポンサーリンク

その他サンプルコード(改行コードを削除)

ORSに空文字を設定すると、改行が削除されることになります。

参考:awkで改行を削除する

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

 $ cat sample1.awk 
#!/bin/sh
cat in.txt | awk '		
	BEGIN{
		ORS = ""
	}
	{
		print $0
	}
'

下記が実行結果になります。
 $ ./sample1.awk 
a1,a2b1,b2c1,c2d1,d2e1,e2

下記のようにして、1行で全ての要素を結合することもできますね。
参考:awkのOFS変数で出力の区切り文字を設定する方法
 $ cat sample2.awk 
#!/bin/sh
cat in.txt | awk '		
	BEGIN{
		FS = ","
		OFS = ""
		ORS = ""
	}
	{
		print $1, $2, $3
	}
'

下記が実行結果になります。
 $ ./sample2.awk 
a1a2b1b2c1c2d1d2e1e2

スポンサーリンク