在Linux/Unix上Bash读取逗号分隔的CSV文件

时间:2020-01-09 10:45:54  来源:igfitidea点击:

如何在UNIX/Linux/BSD/MacOS bash脚本下读取逗号分隔的CVS文件?
我的示例文件如下:FirstName LastName,DOB,SSN,Telephone,Status如何在Bash中解析CSV文件?
逗号分隔值(CSV)文件是带分隔符的文本文件,使用逗号分隔值。

CSV文件以纯文本格式存储表格数据。
文件的每一行都是一个数据记录。
您可以使用while shell循环读取逗号分隔的cvs文件。

IFS变量会将cvs设置为(逗号)。
读取命令将读取每一行并将数据存储到每个字段中。
让我们看看如何在Linux,macOS,* BSD或者类似Unix的操作系统下运行的Bash中解析CSV文件。

Bash读取逗号分隔的CSV文件

语法如下,短语为一个名为input.csv的CSV文件:

while IFS=, read -r field1 field2
do
    echo "$field and $field2"
done < input.csv

如何在Bash中解析CSV文件

使用文本编辑器(例如vim命令/nano命令)创建一个名为test.sh的文件:

vim test.sh

追加以下代码:

#!/bin/bash
# Purpose: Read Comma Separated CSV File
# Author:  under GPL v2.0+
# -----------------------------------------
INPUT=data.cvs
OLDIFS=$IFS
IFS=','
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read flname dob ssn tel status
do
	echo "Name : $flname"
	echo "DOB : $dob"
	echo "SSN : $ssn"
	echo "Telephone : $tel"
	echo "Status : $status"
done < $INPUT
IFS=$OLDIFS

通过设置执行权限,按如下所示运行test.sh文件shell脚本:

chmod +x test.sh
./test.sh
bash test.sh
sh test.sh

在Bash中解析CSV文件

CSV应用程序支持

电子表格和数据库管理系统(包括LibreOffice Calc和Apache OpenOffice Calc)都支持CSV文件格式。
导入和导出CSV文件

如何在calc中打开/导入文本CSV文件

人们也可以使用GUI应用读取逗号分隔的CSV文件。

  • 开始计算
  • 选择"文件">"打开"。
  • 找到您要打开的CSV文件。
  • 如果文件的扩展名为* .csv,请选择该文件。
  • 点击"打开"。
  • 将打开"文本导入"对话框。
  • 指定将文件中的文本分为几列的选项。
  • 点击"确定"。

许多Linux和Unix命令行实用程序(例如,剪切,粘贴,联接,排序,uniq,awk,sed)可以在逗号分隔符上分割文件,因此可以处理简单的CSV文件。
例如:

awk -F',' '{ print  " "  }'