linux如何读取csv文件

在 Linux 中,可用 cat 快速预览 CSV;awk -F',' '{print $1}' file.csv 按逗号分隔提取列;或用 csvtool 等工具解析,实现灵活高效的 CSV

在Linux系统中读取CSV文件有多种方式可供选择,具体取决于您的使用场景(快速查看/简单处理/复杂分析)、数据规模以及是否需要后续编程操作,以下是完整的解决方案及技术要点解析:

linux如何读取csv文件


基础查看类命令

cat + 管道过滤

# 基础查看(适合小文件)
cat data.csv | head -n 5       # 显示前5行
cat data.csv | tail -n 5      # 显示后5行
cat data.csv | grep "关键词"   # 搜索含关键词的行

⚠️ 注意:若文件包含特殊字符(如逗号嵌套),可能导致解析错误。

less/more 交互式浏览

less data.csv                 # 支持上下翻页+搜索
fless data.csv                # 彩色高亮显示(需安装fop包)

✅ 优势:实时滚动查看长文件,按q退出,进入搜索模式。

column 格式化输出

cat data.csv | column -t -s,  # 自动对齐各列(-t:去除制表符,-s,:指定分隔符)

📊 效果:将原始CSV转为整齐的表格形式,适合终端展示。


结构化处理工具

awk 强大的文本处理器

# 示例1:提取第2列的所有值
awk -F, '{print $2}' data.csv > column2.txt
# 示例2:统计某列数值总和(假设第3列为数字)
awk -F, '{sum += $3} END {print sum}' data.csv
# 示例3:筛选满足条件的行(如年龄>30)
awk -F, '$4 > 30 {print $0}' data.csv > filtered.csv

💡 技巧-F,显式指定逗号为分隔符,避免自动分割带来的歧义。

csvtool 专业CSV处理套件

功能 命令示例 说明
查看头部 csvcut -n data.csv 显示列名及前几行数据
转换格式 csvformat -T data.csv 转置行列
排序 csvsort -c 2 -r data.csv 按第2列降序排列
合并多文件 csvjoin -c 1,2 file1.csv file2.csv 按第1/2列关联两个文件

⚠️ 依赖安装:需先通过包管理器安装(Debian/Ubuntu: sudo apt install csvtool)。

linux如何读取csv文件

miller (mlr) 高性能CSV处理器

# 统计每列的唯一值数量
mlr --csv stats1 -g data.csv
# 按某列分组求平均值(假设第5列为数值)
mlr --csv put '$avg_val=$5/NR' then ungroup data.csv

🚀 特点:内存占用低,适合GB级大文件处理。


编程接口方案

Python + pandas(推荐用于数据分析)

import pandas as pd
# 基本读取
df = pd.read_csv("data.csv")
print(df.head())
# 处理特殊字符(如换行符在单元格内)
df = pd.read_csv("data.csv", quotechar='"', escapechar='\')
# 指定列名跳过首行
df = pd.read_csv("data.csv", header=None, names=["col1", "col2"])

🔧 扩展能力:可直接进行数据清洗、可视化或导出为其他格式。

R语言(统计分析场景)

# 读取并查看摘要
data <read.csv("data.csv", stringsAsFactors=FALSE)
summary(data)
# 处理缺失值
data[is.na(data)] <0  # 将NA替换为0

📈 适用场景:统计学建模前的预处理。

SQL数据库导入

# MySQL导入(需提前创建数据库)
mysqlimport --local -u root -p mydatabase data.csv
# PostgreSQL导入(使用COPY命令)
psql -U postgres -d mydb -c "copy table_name FROM 'data.csv' DELIMITER ',' CSV HEADER"

🗃️ 优势:利用数据库索引加速查询,支持事务回滚。


关键注意事项

问题类型 解决方案
编码问题 添加-k iconv参数或使用iconv工具转换编码:iconv -f GBK -t UTF-8 data.csv > new.csv
awk中使用NR>1跳过首行;pandas设置header=None
超大文件卡顿 使用split分割文件:split -l 100000 data.csv small_part_
特殊分隔符 awk -F';'处理分号分隔的文件;pd.read_csv(sep=';')
带引号字段 确保使用quotechar='"'参数,避免引号干扰

相关问答FAQs

Q1: 为什么用cat查看CSV会出现错位?

A: 因为默认情况下cat不会识别CSV的结构,遇到包含逗号的字段(如地址:”北京市,朝阳区”)会错误分割,建议改用column -t -s,或专业工具如csvlook(来自csvkit包)。

linux如何读取csv文件

Q2: 如何处理带有BOM头的文件?(常见于Excel导出的UTF-8文件)

A: 使用iconv去除BOM头:iconv -f utf-8 -t utf-8//IGNOREBOM data.csv > cleaned.csv,在Python中可添加参数encoding='utf-8-sig'


通过上述方法组合,您可以灵活应对从简单查看到复杂分析的各种需求,对于日常使用,推荐掌握awk基础操作和csvtool工具集;涉及数据分析时,优先选择

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/102114.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年8月11日 09:56
下一篇 2025年8月11日 10:02

相关推荐

  • Linux安装MongoDB详细步骤教程?

    在Linux上安装MongoDB通常通过官方仓库:添加MongoDB的APT/YUM仓库源,使用包管理器安装mongodb-org软件包,启动服务并设置开机自启,最后验证安装成功。

    2025年6月9日
    1600
  • Linux如何查看CPU使用率

    在Linux中查看CPU使用率,常用命令包括:,- top 或 htop:实时监控CPU及进程动态(htop需安装),- mpstat:显示每个CPU核心详细统计,- vmstat:报告整体CPU使用情况,- sar:查看历史与实时数据,- 直接读取 /proc/stat 文件获取原始信息

    2025年6月4日
    2800
  • Linux用户如何快速修改用户名

    修改Linux用户名需使用usermod命令:先用usermod -l 新用户名 旧用户名更改登录名,再用usermod -d /home/新用户名 -m 新用户名更新主目录路径,最后用groupmod -n 新组名 旧组名同步用户组名(如需),操作前务必备份数据,避免系统异常。

    2025年6月6日
    1300
  • linux 如何查看网络是否堵塞

    Linux中,可以使用ifconfig或ip link查看网络接口状态,用ping测试连通性,

    2025年8月8日
    2300
  • 如何从u盘启动linux系统文件下载

    U盘插入电脑,使用工具如Rufus等将Linux系统镜像文件写入U盘制作启动盘,之后在电脑BIOS或UEFI设置中,将U盘设为第一启动项,即可从U

    2025年7月14日
    2600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN