awkのgsub()とsub()の違いは、置換回数の制約になります。

gsub():置換対象文字列があった場合は全て置換する

sub():最初の置換対象文字列のみ1回置換

スポンサーリンク

gsub()のサンプルコード

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

gsub()の動きをサンプルコードで確認してみたいと思います。
下記のようにin.txtがあったとします。

 $ cat in.txt 
2016-11-15 雨
2016-11-16 曇り
2016-11-17 晴れ

下記のようにgsub()を使って、1フィールド(列)目の"-"を"/"に置換して、print出力しています。

 $ cat sample.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		gsub( "-", "/", $1 )
		print $1 , $2
	}
'

実行すると、全ての"-"が"/"に置換されています。

 $ ./sample.awk 
2016/11/15 雨
2016/11/16 曇り
2016/11/17 晴れ

スポンサーリンク

sub()のサンプルコード

sub()の動きをサンプルコードで確認してみたいと思います。
in.txtについては、gsub()の時と同じファイルにしています。

 $ cat in.txt 
2016-11-15 雨
2016-11-16 曇り
2016-11-17 晴れ

今度は、下記のようにsub()を使って、1フィールド(列)目の"-"を"/"に置換して、print出力しています。

 $ cat sample2.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		sub( "-", "/", $1 )
		print $1 , $2
	}
'

実行すると、最初の"-"のみ"/"に置換されています。
 $ ./sample2.awk 
2016/11-15 雨
2016/11-16 曇り
2016/11-17 晴れ

基本的にはgsub()を使う場合の方が多い印象がありますが、違いを抑えておいて使い分けて行くと良いと思います。

スポンサーリンク