อ่านไฟล์ CSV ใน Bash

Xan Fil Csv Ni Bash



รูปแบบเต็มของ CSV คือค่าที่คั่นด้วยเครื่องหมายจุลภาค ไฟล์ CSV ถูกใช้โดย coder เพื่อวัตถุประสงค์หลายอย่างที่เก็บข้อมูลในรูปแบบตารางกึ่งโครงสร้าง แต่ละบรรทัดของไฟล์จะถือว่าเป็นแถวของตาราง และแต่ละช่องของแถวจะถูกคั่นด้วยเครื่องหมายจุลภาค (,) ในไฟล์ CSV มีหลายวิธีใน Bash เพื่ออ่านไฟล์ CSV ซึ่งอธิบายไว้ในบทช่วยสอนนี้

ข้อกำหนดเบื้องต้น:

คุณต้องสร้างไฟล์ CSV ก่อนฝึกตามตัวอย่างบทช่วยสอนนี้ สร้างไฟล์ CSV ชื่อ “customers.csv” โดยมีเนื้อหาต่อไปนี้เพื่อตรวจสอบผลลัพธ์ของสคริปต์ที่ใช้ในบทช่วยสอนนี้ ในไฟล์นี้ 3 ช่องที่ 4 ไทย บรรทัดและ 6 ไทย สายว่างเปล่า

ID, ชื่อ, อีเมล, ที่อยู่, มือถือ

101 จาฟาร์ อิกบาล จาฟาร์ @ gmail.com, 9 / A Dhanmondi ธากา, + 8801762341425

102 , กมล ฮุสเซน , กมล @ gmail.com, 120 มีร์ปูร์ ธากา 8801988675345

103 นิโรบล เชาว์ดูรี 33 / 2 จิกาโตลา ธากา 8801754532312

104 ฟาร์ฮีน ฮาซัน @ gmail.com < href = 'ว่างเปล่า' > , > 10 คาดัลบากุน ธากา, + 8801512875634

105 , นพ. ราฮิม,, 2 / บี ธันมนดี ธากา, + 8801700453423

วิธีต่างๆ ในการอ่านไฟล์ CSV ใน Bash

ไฟล์ CSV สามารถแยกวิเคราะห์ได้หลายวิธีโดยใช้สคริปต์ Bash วิธีต่างๆ ในการอ่านไฟล์ “customers.csv” จะแสดงในส่วนนี้ของบทช่วยสอน







ตัวอย่างที่ 1: อ่านเนื้อหาต้นฉบับของไฟล์ CSV

สร้างไฟล์ Bash ด้วยสคริปต์ต่อไปนี้ที่อ่านเนื้อหาทั้งหมดของไฟล์ “customers.csv” โดยใช้ลูป “ while”:



#!/bin/bash

#ตั้งชื่อไฟล์

ชื่อไฟล์ = 'customers.csv'

# อ่านแต่ละบรรทัดของไฟล์ในการวนซ้ำแต่ละครั้ง

ในขณะที่ อ่าน ข้อมูล

ทำ

#พิมพ์ไลน์

เสียงสะท้อน ข้อมูล $

เสร็จแล้ว < $ชื่อไฟล์

ผลลัพธ์ต่อไปนี้ปรากฏขึ้นหลังจากเรียกใช้สคริปต์:







ตัวอย่างที่ 2: อ่านไฟล์ CSV โดยทำให้ส่วนหัวเป็นตัวพิมพ์ใหญ่

บรรทัดแรกของไฟล์ “customers.csv” มีส่วนหัวของไฟล์ สร้างไฟล์ Bash ด้วยสคริปต์ต่อไปนี้ที่พิมพ์เนื้อหาของไฟล์ “customers.csv” หลังจากพิมพ์บรรทัดแรกของไฟล์เป็นตัวพิมพ์ใหญ่ คำสั่ง “awk” ใช้ในสคริปต์เพื่อพิมพ์เนื้อหาของไฟล์หลังจากพิมพ์ส่วนหัวเป็นตัวพิมพ์ใหญ่ เครื่องหมายจุลภาค (,) ถูกกำหนดไว้ในค่า FS และ OFS ในสคริปต์เพื่ออ่านไฟล์ “customers.csv” และเขียนไฟล์ “updatedcustomers.csv” คำสั่ง 'cat' ใช้เพื่อพิมพ์เนื้อหาของไฟล์ทั้งสอง

พิมพ์ฉ 'ไฟล์ต้นฉบับ: \n '

#พิมพ์เนื้อหาต้นฉบับของไฟล์ CSV

แมว cstomers.csv

#สร้างไฟล์ CSV ใหม่หลังจากพิมพ์ส่วนหัวเป็นตัวพิมพ์ใหญ่

อึดอัด 'เริ่มต้น{FS=',';OFS=','}

{

ถ้า(NR==1)

พิมพ์ท็อปเปอร์ ($0)

อื่น

พิมพ์

}'
ลูกค้า.csv > อัปเดตcustomers.csv

พิมพ์ฉ ' \n ไฟล์ที่แก้ไข: \n '

#พิมพ์ไฟล์ CSV ใหม่

แมว อัปเดตcustomers.csv

ผลลัพธ์ต่อไปนี้ปรากฏขึ้นหลังจากเรียกใช้สคริปต์:



ตัวอย่างที่ 3: แทนที่ฟิลด์ว่างของไฟล์ CSV ด้วย 'ไม่มี'

สร้างไฟล์ Bash ด้วยสคริปต์ต่อไปนี้ที่พิมพ์เนื้อหาของไฟล์ “customers.csv” หลังจากแก้ไขฟิลด์ว่างด้วยค่า “ไม่มี” สองฟิลด์ว่างเปล่าในไฟล์นี้ซึ่งจะกล่าวถึงต่อไปนี้ คำสั่ง 'awk' ใช้ในสคริปต์เพื่อพิมพ์เนื้อหาของไฟล์หลังจากแก้ไขฟิลด์ว่าง เครื่องหมายจุลภาค (,) ถูกกำหนดไว้ในค่า FS และ OFS ในสคริปต์เพื่ออ่านไฟล์ “customers.csv” และเขียนไฟล์ “updatedcustomers.csv” คำสั่ง 'cat' ใช้เพื่อพิมพ์เนื้อหาของไฟล์ทั้งสองในรูปแบบตาราง

พิมพ์ฉ 'ไฟล์ต้นฉบับ: \n '

#พิมพ์เนื้อหาต้นฉบับของไฟล์ CSV ในรูปแบบตาราง

แมว ลูกค้า.csv | คอลัมน์ -s, -t

อึดอัด 'เริ่มต้น{FS=',';OFS=','}

{

สำหรับ (ฟิลด์ = 1; ฟิลด์ <= NF; ฟิลด์ ++)

{

ถ้า($field == '') $field='ไม่มี'

}

พิมพ์

}'
ลูกค้า.csv > แก้ไขcustomers2.csv

พิมพ์ฉ ' \n ไฟล์ที่แก้ไข: \n '

#พิมพ์ไฟล์ CSV ใหม่ในรูปแบบตาราง

แมว แก้ไขcustomers2.csv | คอลัมน์ -s, -t

ผลลัพธ์ต่อไปนี้ปรากฏขึ้นหลังจากเรียกใช้สคริปต์:

ตัวอย่างที่ 4: พิมพ์จำนวนแถวและคอลัมน์ทั้งหมดของไฟล์ CSV

สร้างไฟล์ Bash ด้วยสคริปต์ต่อไปนี้ที่นับจำนวนแถวและคอลัมน์ทั้งหมดในไฟล์ “customers.csv” ตัวแปร NR ใช้เพื่อพิมพ์จำนวนแถวทั้งหมดของไฟล์ ตัวแปร NF ใช้เพื่อพิมพ์จำนวนฟิลด์ทั้งหมดของไฟล์

พิมพ์ฉ 'ไฟล์ต้นฉบับ: \n '

#พิมพ์เนื้อหาต้นฉบับของไฟล์ CSV

แมว ลูกค้า.csv

เสียงสะท้อน

เสียงสะท้อน -น 'แถวทั้งหมด:'

อึดอัด -F, 'สิ้นสุด{พิมพ์ NR}' ลูกค้า.csv

เสียงสะท้อน -น 'คอลัมน์ทั้งหมด:'

อึดอัด -F, 'จบ{พิมพ์ NF}' ลูกค้า.csv

ผลลัพธ์ต่อไปนี้ปรากฏขึ้นหลังจากเรียกใช้งานสคริปต์ บรรทัดทั้งหมดในไฟล์คือ 6 และฟิลด์ทั้งหมดของไฟล์คือ 5 ซึ่งพิมพ์ในเอาต์พุต:

บทสรุป

วิธีการอ่านไฟล์ CSV การแก้ไขไฟล์ CSV และการนับแถวและคอลัมน์ของไฟล์ CSV โดยใช้สคริปต์ Bash แสดงอยู่ในบทช่วยสอนนี้