IFS変数と正規表現を使用したBash文字列の分割

IFS変数と正規表現を使用したBash文字列の分割

文字列を任意の文字に配列に分割しようとしています。いいえ文字と数字。これを行うために正規表現パターンをIFS変数に割り当てることはできますか?

私は次のことを試しました:

input="$1"

IFS="[^a-zA-Z]"
read -ra name_parts <<< "$input"

ただし、これにより文字列が「a」または「A」に分割されます。 「^」も認識しません。 この問題タイトルは似ているようですが、私が尋ねる質問とは関係がないようです。

ベストアンサー1

IFSこのままでは使用できません。もちろんいいえ正規表現を使用してください。少なくとも構成文字(リテラル文字)は、IFSシェル内の単語を展開するときに単語を分割するために使用されます。例えば

IFS=: read -r v1 v2 <<<"foo:bar"

定義した内容はIFS="[^a-zA-Z]"文字通り文字(例えば、、、、、、)を受け入れ、入力文字列を分割するための区切り文字[として使用されます。これは明らかに予想されたものとは異なります。^a-zAZ]

おすすめ記事