当前位置: 首页 > news >正文

【数据工程】 2. Unix 基础与文件操作

在命令行上处理数据:Unix 基础与文件操作

在现代数据工程与数据分析中,掌握命令行操作是一项基础且高效的技能。无论是快速处理文本数据、自动化数据管道,还是管理文件系统,Unix 系统提供了强大的命令行工具,让数据工作更加灵活、高效。本文将从 Unix 历史、基本使用原则,到常用文件操作命令和高级文本处理技巧,系统介绍如何在命令行上处理数据。


Unix 简史

Unix 是一种历史悠久的操作系统,其发展奠定了现代数据处理与系统管理的基础:

  • 起源:1970 年代在贝尔实验室(Bell Labs)开发

  • 商业化:AT&T 将 Unix 授权给外部合作伙伴,引发多种商业化尝试,包括:

    • Sun Solaris、IBM AIX、Microsoft Xenix、HP-UX
    • Berkeley BSD Unix
  • Linux:1991 年,Linus Torvalds 开始独立开发 Linux,成为 Unix-like 系统

    • Free Software Foundation 称其为 GNU/Linux
  • macOS:基于 Mach 内核,并添加 BSD Unix 的工具与层

Unix 系统的发展历史展示了其灵活性与可扩展性,也为现代数据工程的命令行工具打下了基础。


使用 Unix 时需注意的事项

Unix 的命令行接口非常强大,但也要求用户保持谨慎与精准:

  • 命令行工具区分大小写

  • 操作以键盘为中心,每个字符都很重要,例如:

    • 使用 ls 列出目录,而不是 “list” 或 “dir”
    • 使用 chmod 修改权限,而不是 “change_mode”
  • Unix 很少在执行前询问确认,因此修改或删除操作需格外小心

  • 帮助资源丰富:

    • man <command> 查看命令手册页
    • 许多命令支持 -h--help 选项

文件系统导航命令

在 Unix 系统中,掌握目录与文件操作是第一步。常用命令包括:

命令功能
pwd显示当前工作目录
cd <name>切换到指定目录
cd返回用户主目录
cd -返回上一次目录
cd /切换到根目录
ls [<name>]列出目录内容
ls -al列出所有内容及详细信息
ls -R递归列出目录及子目录
mkdir <name>创建新目录
mv <old> <new>重命名或移动文件/目录
cp <source> <destination>复制文件或目录

查看文件内容

常用命令查看文件内容或文件信息:

命令功能
cat filename将文件内容输出到屏幕
more filename / less filename分页显示文件内容
head filename输出文件前 N 行(默认 10 行)
tail filename输出文件后 N 行(默认 10 行)
wc filename统计文件行数、单词数、字符数
sort filename对文件内容排序

输出重定向(Output Redirection)

Unix 命令默认将输出显示在屏幕上(stdout),但可以重定向到文件:

  • 标准输出重定向:
command > filename
  • 错误输出重定向:
command 2> filename

这样可以保存命令输出,方便后续分析或日志记录。


管道(Piping):组合 Unix 工具

在 Unix 中,一切皆为文件,命令输出可直接作为下一个命令的输入:

  • 使用 | 管道符连接命令
  • 示例:
cat filename | sort | head -3

这条命令会:

  1. cat filename 输出文件内容
  2. sort 对内容排序
  3. head -3 输出前三行
  • 实用案例:拼写检查
cat textfile |
tr 'A-Z' 'a-z' |       # 转小写
tr -cs 'A-Za-z' '\n'|  # 每行一个单词,去掉非字母字符
sort |                  # 排序
uniq |                  # 去重
comm -23 - /usr/share/dict/words  # 显示不在词典中的单词

在文件中查找数据:grep 与 egrep

grep 命令用于模式匹配搜索:

grep pattern filename
  • 查找文件中匹配的行
  • 默认区分大小写
  • egrep 支持扩展正则表达式

正则表达式(Regular Expressions)

正则表达式是定义搜索模式的字符序列,支持复杂匹配:

  • 通配符:. 匹配任意单个字符
  • 可选 ?:0 或 1 次
  • 星号 *:0 或多次
  • 加号 +:1 或多次
  • 重复次数 {n}
  • 字符集合 [ae]、否定 [^bc]
  • 行首 ^、行尾 $
  • 分组 \([A-Z]+\)

正则表达式可与 grep, sed, awk 等命令结合,实现强大搜索与文本处理功能。


流编辑器:sed

sed 是 Unix 的流编辑器,常用于自动文本替换:

sed -e 's/from/to/g' filename
  • s 表示替换
  • from 为匹配字符串
  • to 为替换字符串
  • g 表示行内全部替换

示例:

echo "hello world" | sed -e 's/hello/bonjour/g' > output.txt

文本处理语言:awk

AWK 是用于文本处理和数据提取的编程语言:

  • 起源:1970 年代贝尔实验室(Alfred Aho, Peter Weinberger, Brian Kernighan)
  • 功能:对每行输入执行模式 { 动作 },可处理字段 $0, $1, …, $NF
  • 可指定字段分隔符
  • 支持特殊模式 BEGINEND,分别在文件开始或结束时执行动作

示例:提取 CSV 文件第二列:

awk -F ',' '{print $2}' file.csv

小结

掌握 Unix 命令行,不仅可以高效导航文件系统,还能完成数据浏览、过滤、排序、搜索和复杂文本处理。

  • 输出重定向让数据保存更灵活
  • 管道连接多个命令,实现无临时文件的数据流
  • grep、正则表达式、sedawk 提供强大文本处理能力

通过这些工具,数据工程师和分析师可以在命令行上快速处理大规模文本数据,为自动化数据管道和数据分析打下坚实基础。


文章转载自:

http://kWNvz96a.hkshy.cn
http://NM9ewDkA.hkshy.cn
http://se8ZzAnf.hkshy.cn
http://T4E9Cvph.hkshy.cn
http://veeM1HJN.hkshy.cn
http://MRGMlnb6.hkshy.cn
http://2bAVlsNL.hkshy.cn
http://CbeVYGDI.hkshy.cn
http://lEsgyzAe.hkshy.cn
http://2pjfbhDw.hkshy.cn
http://jx7JVCJM.hkshy.cn
http://zmhz8vLE.hkshy.cn
http://NMKY5ha0.hkshy.cn
http://6INtQ1Px.hkshy.cn
http://1BQcHgNR.hkshy.cn
http://yEAYtZ9V.hkshy.cn
http://qkiOTp7Z.hkshy.cn
http://EplyMQuc.hkshy.cn
http://tA5GLjJI.hkshy.cn
http://Q57tZJGa.hkshy.cn
http://DV0is9pf.hkshy.cn
http://GMeyNIvk.hkshy.cn
http://4ttgjPkQ.hkshy.cn
http://hlS6r1g5.hkshy.cn
http://cwsCNCC0.hkshy.cn
http://1VhvbCND.hkshy.cn
http://Ubepvkqe.hkshy.cn
http://IOWXDXUZ.hkshy.cn
http://q4adTcoQ.hkshy.cn
http://wLKXAJl6.hkshy.cn
http://www.dtcms.com/a/385676.html

相关文章:

  • 第四课、 TypeScript 中 Cocos 的生命周期
  • 联邦学习论文分享:DPD-fVAE
  • Pairwise排序损失:让机器学会排序的艺术
  • 硬件开发—IMX6ULL裸机—UART通信
  • 蓝牙上位机开发指南
  • 【课堂笔记】复变函数-1
  • 谈谈人大金仓数据库
  • C#调用钉钉API发送通知教程
  • 电子电气架构 --- 产线EOL为何需要智能升级?
  • 无人机姿态控制系统详解与实现
  • 7.Redis 主从复制(重在理解)
  • 从零搭建RAG应用:跳过LangChain,掌握文本分块、向量检索、指代消解等核心技术实现
  • 从0开始做一个完整项目 -- 软件跨平台编译打包全流程
  • comfyUI实战——使用openArt的工作流
  • linux 之 struct attribute
  • 强化学习PPO-分类任务
  • 决策树模型全解析:从分类到回归(基于鸢尾花数据集)
  • shell脚本部署lamp
  • c语言6:static 关键字控制变量/函数的 “生命周期” 与 “可见性”
  • MySQL 数据库对象与视图:从概念到实战,掌握虚拟表的核心价值
  • 【VPX361】基于3U VPX总线架构的XCZU47DR射频收发子模块
  • 消火栓设备工程量计算 -【图形识别】秒计量
  • 基于LangGraph的深度研究智能体技术解析
  • 【哈希表】1512. 好数对的数目|2506. 统计相似字符串对的数目
  • Java--多线程基础知识(2)
  • 活泼解析pthread_join函数:多线程世界的等待仪式
  • 机器视觉的智能手表后盖激光打标应用
  • 第七章 来日方长(2025.8学习总结)
  • 卡方检验公式中分母 (a+b)(c+d)(a+c)(b+d)的本质
  • IT基础知识——数据库