最初の文字を大文字にする

文字列の大文字・小文字の変換 - forest book を見ていて、awk なら toupper() 関数と tolower() 関数で一気に置換できると思っていたのですが、awk には最初の文字だけ大文字にするという関数がなかったので作ってみました。

#! /usr/bin/gawk -f
# capitalize.awk

BEGIN {
    if (__test__) {
        str = ARGV[1] ? ARGV[1] : "capitalize";
        print capitalize(str);
    }
}

# capitalize():     return capitalized strings
#   in:     strings
#   out:    capitalized strings
function capitalize(str) {
    return toupper(substr(str, 1, 1)) substr(str, 2);
}

ここでは capitalize() という関数を定義しています。 実行してみます。

$ nawk -f capitalize.awk -v __test__=1
Capitalize
$ nawk -f capitalize.awk -v __test__=1 'i have a pen.'
I have a pen.

もっとも関数化すると便利なほど使われるか? と言われると疑問ですが、こうした簡単な関数を定義しておくことで効率化できる場合もあります。

tag_nawk.pngtag_nawk.pngtag_nawk.pngtag_nawk.png