📅  最后修改于: 2023-12-03 15:13:34.194000             🧑  作者: Mango
在开发过程中,我们通常需要从大型 CSV 文件中提取特定列的数据,或者根据特定列的值拆分该文件。这是一个很有用的技能,可以用 awk 和 bash 脚本来实现。
在本指南中,我们将使用 awk 和 bash。如果您不熟悉这些工具,请先学习它们的基础知识。
我们的目标是从一个 CSV 文件中提取一列数据,并将其拆分为多个文件,每个文件名基于该列的值。
例如,我们有一个以下结构的CSV文件:
Name,Age,Salary
John,24,45000
Alice,32,60000
Bob,27,55000
我们将根据第一列的值拆分该文件,并将每个人的信息保存在单独的文件中,文件名以他们的姓名命名。
我们可以使用 awk
命令来解析 CSV 文件,使用 bash
来拆分它们。
先来看看使用 awk
命令提取 CSV 文件的某一列的数据。
awk -F ',' '{print $1}' file.csv
上面的命令会将文件 file.csv
中每一行的第一列提取出来,并打印到终端上。
接下来,我们需要将每个行的信息保存到单独的文件中。这可以使用 bash
脚本来做到。
#!/bin/bash
filename="file.csv"
# Ignore header row
tail -n +2 $filename | while read row; do
name=$(echo $row | awk -F ',' '{print $1}')
line="$row"
# Write to file
echo $line >> "$name.csv"
done
上述代码将文件名设置为 filename
,然后通过 tail
命令忽略第一行,对其余每一行循环;使用 awk 命令从每一行中提取姓名,并将姓名作为文件名,然后将该行数据附加到该文件中。
在这篇文章中,我们使用 awk
和 bash
来解析 CSV 文件,并使用从中提取的值来拆分该文件。这是一种非常有用的技巧,特别是在需要处理大型 CSV 文件时。