awkでの分割使用に関する質問

awkでの分割使用に関する質問
arr=($(echo "great#man" | awk  '{split($0,a,"#"); } END {print a[0]; print a[1];}')) 
    echo " ${arr[0]} "
    echo " ${arr[1]}"

私の予想結果は次のとおりです。

great
man

しかし、ますます多くなります。

great

arr[1] は印刷されません

ベストアンサー1

このバリエーションは私にとって効果的です。

$ echo "great#man" | awk '{split($0,a,"#"); } END {print a[1]; print a[2];}'
great
man

~からオンライン文書:

split(string, array [, fieldsep [, seps ] ])

文字列をfieldsepで区切られたセグメントに分割し、セグメントを配列に保存し、区切り文字列をseps配列に保存します。最初の部分はarray [1]に保存されます。、array[2]の2番目の部分などです。 3番目のパラメータfieldsepの文字列値は、文字列を分割する場所を記述する正規表現です(FSと同様に、入力レコードを分割する場所を記述する正規表現です。正規表現フィールドの分割を参照)。 fieldsep を省略すると、FS 値が使用されます。 Split() は、生成された要素の数を返します。 seps は seps[i] が array[i] と array[i+1] の区切り文字列である gawk 拡張です。 fieldsep が単一の空白の場合、前の空白はすべて seps[0] に移動し、末尾の空白は seps[n] に移動します。ここで、nは分割()の戻り値(つまり、配列の要素数)です。

おすすめ記事