如何在bash脚本中分离列数据并存储在数组中,其中列分隔符是每行的空间数量不同?

如何在bash脚本中分离列数据并存储在数组中,其中列分隔符是每行的空间数量不同?

让我有一个包含如下数据的文件:

-ab-a--a-- 1 abcd   abcd        934M Nov  2 00:14 abc_de-123.456.xyz-2022-11-02_1234567890.zip
-ab-a--a-- 1 abcd   abcd         45M Nov  2 01:39 abc_de-123.456.xyz-2022-11-02_1234567890.zip
-ab-a--a-- 1 abcd   abcd        7.1G Nov 12 02:35 abc_de-123.456.xyz-2022-11-12_1234567890.zip
-ab-a--a-- 1 abcd   abcd       1020M Nov  9 03:32 abc_de-123.456.xyz-2022-11-09_1234567890.zip
-ab-a--a-- 1 abcd   abcd        1.1G Nov 12 04:32 abc_de-123.456.xyz-2022-11-12_1234567890.zip
-ab-a--a-- 1 abcd   abcd       1010G Nov  7 05:35 abc_de-123.456.xyz-2022-11-07_1234567890.zip
-ab-a--a-- 1 abcd   abcd        2.0G Nov 12 06:41 abc_de-123.456.xyz-2022-11-12_1234567890.zip

那么如何将时间和 zip 文件名存储在该文件的数组中呢?某些行中有不同数量的空间。

我试过这段代码:

readarray -t time_array <<< "cut -d ' ' -f  9 filename)"
readarray -t zip_array  <<< "cut -d ' ' -f 10 filename)"

此代码仅当有相同数量的 < space > 作为列分隔符但在文件中没有与列分隔符相同的空格数时才有效

我想要的输出为:

时间数组包含:

00:14 
01:39 
02:35 
03:32 
04:32 
05:35 
06:41 

zip_array 包含:

abc_de-123.456.xyz-2022-11-02_1234567890.zip
abc_de-123.456.xyz-2022-11-02_1234567890.zip
abc_de-123.456.xyz-2022-11-12_1234567890.zip
abc_de-123.456.xyz-2022-11-09_1234567890.zip
abc_de-123.456.xyz-2022-11-12_1234567890.zip
abc_de-123.456.xyz-2022-11-07_1234567890.zip
abc_de-123.456.xyz-2022-11-12_1234567890.zip

相关内容