Bashスクリプトから列データを分離し、列区切り記号を持つ配列に保存する方法1行あたりの空白数は異なりますか?

Bashスクリプトから列データを分離し、列区切り記号を持つ配列に保存する方法1行あたりの空白数は異なりますか?

次のデータを含むファイルを作成しましょう。

-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)"

このコードは、列区切り文字と同じ数の<スペース>がありますが、ファイルの列区切り文字と同じ数のスペースがない場合にのみ機能します。

私が望む出力は次のとおりです。

時間配列には以下が含まれます。

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

ベストアンサー1

おすすめ記事