Bash で CSV ファイルを読み取る

Bash De Csv Fairuwo Dumi Quru



CSV の完全な形式はカンマ区切り値です。 CSV ファイルは、データを半構造の表形式で保存するさまざまな目的でコーダーによって使用されます。ファイルの各行はテーブルの行として扱われ、CSV ファイルでは行の各フィールドがカンマ (,) で区切られます。 Bash には、このチュートリアルで説明する CSV ファイルを読み取るための多くの方法が存在します。

前提条件:

このチュートリアルの例を実践する前に、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 ファイルの行と列をカウントする方法を示します。