对混合数据数组进行排序

Naf*_*aly 2 arrays bash

假设我有一个这样的数据数组:

arr[0] = "someText1 (x,y,z) a"
arr[1] = "someText2 (x,y,z) b"
Run Code Online (Sandbox Code Playgroud)

如何使用Bash按字典顺序排列此数组[仅考虑文本]?

tri*_*eee 6

加入换行,转到sort.

(IFS=$'\n'; sort <<<"${arr[*]}")
Run Code Online (Sandbox Code Playgroud)

sort <<<"fnord"只需将字符串"fnord"作为标准输入发送给sort; 这是一个笨拙的Bash方便符号echo "fnord" | sort(加上它避免了额外的过程),同样,sort <<<"${arr[*]}"将数组提供给sort.

因为数组粘贴取决于值IFS,我们将其更改为换行符,以便"${arr[*]}"生成换行符分隔列表(默认情况下IFS会导致数组中的条目扩展为以空格分隔的列表).为了不IFS永久改变,我们在子壳中做到这一点; 因此,括号括起来.

猛砸手册页是相当密集的,但是这一切都没有; 或参见参考手册.