前提条件:
このチュートリアルの例を実践する前に、CSV ファイルを作成する必要があります。このチュートリアルで使用するスクリプトの出力を確認するには、次の内容を含む「customers.csv」という名前の CSV ファイルを作成します。このファイルでは、3 rd 4つのフィールド 番目 ラインと6 番目 行が空です。
ID、名前、メールアドレス、携帯電話101 、ジャファル・イクバル、ジャファル @ gmail.com、 9 / ダンモンディ ダッカ、+ 8801762341425
102 カマル・ホサイン、カマル @ gmail.com、 120 ミルプール・ダッカ、 8801988675345
103 ニロブ・チョードリー 33 / 2 ジガトラ・ダッカ、 8801754532312
104 ファーヒーン・ハサン @ gmail.com < ある href = '空欄' > 、 ある > 10 カダルバグン ダッカ、+ 8801512875634
105 、医学博士。ラヒム、、 2 / B ダンモンディ ダッカ、+ 8801700453423
Bash で CSV ファイルを読み取るさまざまな方法
CSV ファイルは、Bash スクリプトを使用してさまざまな方法で解析できます。チュートリアルのこの部分では、「customers.csv」ファイルを読み取るさまざまな方法が示されています。
例 1: CSV ファイルの元のコンテンツを読み取る
「while」ループを使用して「customers.csv」ファイルの完全な内容を読み取る次のスクリプトを含む Bash ファイルを作成します。
#!/bin/bash
#ファイル名を設定する
ファイル名 = 「顧客.csv」
#各反復でファイルの各行を読み取ります
その間 読む データ
する
#行を出力する
エコー $data
終わり < $ファイル名
スクリプトの実行後、次の出力が表示されます。
例 2: ヘッダーを大文字にして CSV ファイルを読み取る
「customers.csv」ファイルの最初の行には、ファイルの見出しが含まれています。ファイルの最初の行を大文字にしてから「customers.csv」ファイルの内容を出力する次のスクリプトを含む Bash ファイルを作成します。 「awk」コマンドは、ヘッダーを大文字にした後にファイルの内容を印刷するためにスクリプトで使用されます。 「customers.csv」ファイルを読み取り、「updatedcustomers.csv」ファイルを書き込むため、スクリプト内の FS 値と OFS 値にカンマ (,) が割り当てられています。 「cat」コマンドは、両方のファイルの内容を出力するために使用されます。
プリントフ 「元のファイル: \n 」#CSV ファイルの元の内容を印刷します
猫 cstomers.csv
#ヘッダーを大文字にした後、新しい CSV ファイルを作成します
ああ 'BEGIN{FS=',';OFS=','}
{
if(NR==1)
プリントタッパー($0)
それ以外
印刷する
}' 顧客.csv > 更新された顧客.csv
プリントフ 」 \n 変更されたファイル: \n 」
#新しいCSVファイルを印刷します
猫 更新された顧客.csv
スクリプトの実行後、次の出力が表示されます。
例 3: CSV ファイルの空のフィールドを「なし」に置き換えます
空のフィールドを「None」値で変更した後、「customers.csv」ファイルの内容を出力する次のスクリプトを含む Bash ファイルを作成します。このファイルでは、次に説明する 2 つのフィールドが空です。 「awk」コマンドは、空のフィールドを変更した後にファイルの内容を印刷するためにスクリプトで使用されます。 「customers.csv」ファイルを読み取り、「updatedcustomers.csv」ファイルを書き込むため、スクリプト内の FS 値と OFS 値にカンマ (,) が割り当てられています。 「cat」コマンドは、両方のファイルの内容を表形式で印刷するために使用されます。
プリントフ 「元のファイル: \n 」#CSV ファイルの元の内容を表形式で印刷します
猫 顧客.csv | 列 -s、 -t
ああ 'BEGIN{FS=',';OFS=','}
{
for(フィールド=1;フィールド<=NF;フィールド++)
{
if($field == '') $field='なし'
}
印刷する
}' 顧客.csv > 変更された顧客2.csv
プリントフ 」 \n 変更されたファイル: \n 」
#新しい CSV ファイルを表形式で印刷します
猫 変更された顧客2.csv | 列 -s、 -t
スクリプトの実行後、次の出力が表示されます。
例 4: CSV ファイルの行と列の合計数を出力する
「customers.csv」ファイル内の行と列の合計数をカウントする次のスクリプトを含む Bash ファイルを作成します。 NR 変数は、ファイルの合計行数を出力するために使用されます。 NF 変数は、ファイルのフィールドの合計数を出力するために使用されます。
プリントフ 「元のファイル: \n 」#CSV ファイルの元の内容を印刷します
猫 顧客.csv
エコー
エコー -n 「合計行数:」
ああ -F、 「END{NRを印刷}」 顧客.csv
エコー -n 「列の合計:」
ああ -F、 「END{NFを印刷}」 顧客.csv
スクリプトを実行すると、次の出力が表示されます。ファイル内の合計行数は 6 で、ファイルの合計フィールド数は 5 で、出力に表示されます。
結論
このチュートリアルでは、Bash スクリプトを使用して CSV ファイルを読み取り、CSV ファイルを変更し、CSV ファイルの行と列をカウントする方法を示します。