LoginSignup
16
14

More than 5 years have passed since last update.

[awk] sub関数とgsub関数の違い

Last updated at Posted at 2015-10-21

混乱することがあったのでまとめておきます。

文字列の置換をする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
16
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
14