いくつかの列を含む CSV ファイルがあり、最初の列は 5 桁の顧客番号で、他の列は「;」で区切られています。
次に例を示します。
12345;some;other;cols;comes;here
;some;other;cols;comes;here
;some;other;cols;comes;here
67890;some;other;cols;comes;here
34567;some;other;cols;comes;here
;some;other;cols;comes;here
;some;other;cols;comes;here
;some;other;cols;comes;here
;some;other;cols;comes;here
24315;some;other;cols;comes;here
最初の列が空の場合は、最後に指定した顧客 ID を設定する必要があります。結果は次のようになります。
12345;some;other;cols;comes;here
12345;some;other;cols;comes;here
12345;some;other;cols;comes;here
67890;some;other;cols;comes;here
34567;some;other;cols;comes;here
34567;some;other;cols;comes;here
34567;some;other;cols;comes;here
34567;some;other;cols;comes;here
34567;some;other;cols;comes;here
24315;some;other;cols;comes;here
ここで、bash スクリプトを使用してファイルを行ごとに読み取り、行が数字で始まるかどうかを確認したいと考えています。はいの場合は、行を「;」で分解します array[0] (最初の値) で customerID を設定します。次に、行が数字で始まっていないかどうかを確認し、行の先頭に 5 桁を書きたいと考えています。しかし、顧客 ID で配列インデックスにアクセスできません。
これは私のスクリプトです:
#!/bin/bash
while read line
do
row=$line
if echo $row |grep "^[0-9].*$" > /dev/null;
then
arr=$(echo $row | tr ";" "\n")
echo ${arr[0]};
fi
done < $1
「;」なしで行全体を取得します 次の arr[0] のような CustomerID ではありません。行頭の数字をファイルに書き戻す方法がわかりません。誰でも私を助けることができますか?