1.背景
文字列の指定場所に,
などの区切り文字を追加する場合、
sed 's/^\(.\{9\}\)/\1,/'
を使いました。
▼例:
tin@tin-pc:~$ echo 123456789ABCDEFG | sed 's/^\(.\{0,9\}\)/\1,/'
123456789,ABCDEFG
2.質問
sed 's/^\(.\{9\}\)/\1,/'
と
sed 's/^\(.\{0,9\}\)/\1,/'
の違いはなんでしょうか。
3.分析
^(.{9}) は、行の先頭 (^) から ちょうど9文字 を抽出し、後ろにカンマが追加されます。9文字未満の場合、何もしません。
^(.{0,9}) は、行の先頭 (^) から 最大で9文字まで を抽出し(0~9文字の範囲)、カンマが追加されます。9文字未満の場合でも、その行の後ろにカンマが追加されます。
▼検証:
tin@tin-pc:~$ echo 12345678 | sed 's/^\(.\{9\}\)/\1,/'
12345678
tin@tin-pc:~$ echo 12345678 | sed 's/^\(.\{0,9\}\)/\1,/'
12345678,
tin@tin-pc:~$
コメント欄