混乱することがあったのでまとめておきます。
文字列の置換をするsub関数とgsub関数
sub関数とgsub関数はどちらも文字列の置換を行う関数です。
違いですが、sub関数は呼び出されるとはじめに正規表現に適合した文字列が置換されるだけで最大1回の置換が行われます。
それに対し、gsub関数は正規表現に適合する全ての文字列を置換します。なので、置換回数は1回に限りません。
では、具体的な例を載せておきます。
データ例
適当に以下のデータが"test.dat"というファイルに保存されているとします。
1 yamada_taro tokyo_to
2 kimura_hanako kanagawa_ken
3 takahashi_jiro kyoto_hu
4 sato_momoko osaka_hu
5 tanaka_akane fukuoka_ken
sub関数の使用例
awk '{
sub("_", "-");
print $0;
}' test.dat
最初に"_"が見つかる名前のカラムだけがアンダーハイフンからハイフンに置換されます。
1 yamada-taro tokyo_to
2 kimura-hanako kanagawa_ken
3 takahashi-jiro kyoto_hu
4 sato-momoko osaka_hu
5 tanaka-akane fukuoka_ken
gsub関数の使用例
awk '{
gsub("_", "-");
print $0;
}' test.dat
名前のカラムだけでなく、都道府県のカラムもアンダーハイフンからハイフンに置換されます。
1 yamada-taro tokyo-to
2 kimura-hanako kanagawa-ken
3 takahashi-jiro kyoto-hu
4 sato-momoko osaka-hu
5 tanaka-akane fukuoka-ken