awk で複数の separator を一塊としてみなすかどうかは何で決まる?
,
を区切り文字にした場合と、 (空白) を区切り文字にした場合で
awk
の挙動が異なることに気がつきました。
具体的には、空白の場合には複数の空白文字をひとつの区切りとして取り扱いますが、 ,
の場合には、,
が連続していてもそれぞれの文字が別々の区切りとして取り扱われています。
この挙動の差異は、何によって決定されていますか?具体的には、どの文字だと一塊区切りになり、どの文字だと別々区切りになりますか?
スクリプト例:
#!/bin/bash
printf 'a,,,b\n' | awk -F, '{print $2}'
# => output empty
printf 'a b\n' | awk '{print $2}'
# => output b
printf 'a b\n' | awk -F' ' '{print $2}'
# => output b
printf 'a b\n'
# => output a b