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は分割()の戻り値(つまり、配列の要素数)です。