未记录事实核验 · 状态:现行内容
记录仅说明核验时间与维护状态,不保证适用于所有环境;使用前请留意正文中的版本、适用条件与风险提示。
warning 适用边界与维护说明
本文适用于常见 Linux 环境下的文件查看、日志观察及 vim/nano 基础编辑练习,不是完整的 CSV 解析或 ETL 完整性验证方案。CSV 列数粗估要求表头占一行、以换行符结束且不含引号内逗号;用 wc -l 结果减一推算记录数,还要求每条记录占一行、只有一个表头、无额外空行且末行有换行符。文件尾部观察和行数比较仅供初步检查。示例中的日志与配置路径需替换为实际存在且有权限访问的文件,修改配置宜先备份。本次仅作全文结构审阅,未执行命令或进行外部事实、链接核验。
文件查看与编辑 - cat/head/tail/vim 实用指南
abstract 本文概要
- cat/head/tail/less 查看文件内容
- 实时监控日志(tail -f)
- vim 够用就行:基础操作速查
- nano 简单编辑器
- 数据工作中最常用的文件查看技巧
cat - 直接输出文件内容
# 查看整个文件
cat data.csv
# 查看多个文件(内容拼接输出)
cat file1.csv file2.csv
# 带行号显示
cat -n access.log
# 只显示非空行的行号
cat -b data.txt
warning cat 的局限
cat 会把文件内容全部输出到终端。对于几百 MB 甚至几 GB 的日志文件,执行 cat 会刷屏几分钟,毫无意义。
大文件用 head / tail / less,不用 cat。
cat 的实际用途:
# 合并多个小文件
cat part1.csv part2.csv part3.csv > merged.csv
# 快速查看小配置文件
cat /etc/hosts
cat ~/.bashrc
head - 查看文件头部
# 默认显示前 10 行
head data.csv
# 显示前 N 行
head -n 20 data.csv
head -20 data.csv # 简写形式
# 显示前 100 行(数据文件常用:先看看结构)
head -100 access.log
# 查看文件前 N 个字节
head -c 1024 data.bin
# 查看多个文件的头部
head -5 file1.csv file2.csv
tip 数据工作场景:快速了解数据文件结构
# 收到一个陌生的 CSV,先看看有几列、列名是什么
head -5 mystery_data.csv
# 粗略统计列数:仅适用于表头字段不含引号内逗号、表头占一行且以换行符结束的简单CSV
head -1 data.csv | tr ',' '\n' | wc -l
# 查看大文件(10GB 的日志)的前几行,验证格式
head -20 /data/raw/access_20260318.log
tail - 查看文件尾部
tail 是数据工程师最常用的命令之一,尤其是 tail -f 实时监控日志。
# 默认显示最后 10 行
tail data.log
# 显示最后 N 行
tail -n 50 error.log
tail -50 error.log
# 显示从第 N 行开始到文件结尾(+N 格式)
tail -n +2 data.csv # 从第 2 行开始(跳过 CSV 表头)
# ★ 实时监控日志(follow 模式)
# 文件有新内容写入时,自动输出到终端
tail -f /var/log/spark/spark-submit.log
# 实时监控多个日志文件
tail -f app.log error.log
# 实时监控 + 显示文件名(多文件时有用)
tail -f /var/log/hadoop/*.log
tip tail -f 是排查问题的神器
# 场景 1:提交 Spark 任务后实时看进度
spark-submit --class ... your_job.jar &
tail -f spark-application-xxx.log
# 场景 2:数据管道报警,实时看错误
tail -f /var/log/etl/pipeline.log | grep -i error
# 场景 3:观察日志的同时过滤关键词
tail -f access.log | grep "500\|404\|ERROR"
less - 翻页查看大文件
less 是查看大文件的最佳工具,支持翻页、搜索,不会把内容全部加载到内存。
# 打开文件
less access.log
# 打开时直接跳到最后
less +G access.log
# 打开时搜索关键词
less +/ERROR access.log
less 的内部快捷键(打开文件后使用):
| 快捷键 | 功能 |
|---|---|
空格 或 f |
下一页 |
b |
上一页 |
G |
跳到文件末尾 |
g |
跳到文件开头 |
/关键词 |
向下搜索(n 下一个,N 上一个) |
?关键词 |
向上搜索 |
q |
退出 |
h |
查看帮助 |
tip more vs less
more 是较早的分页工具;常见Linux实现也支持向后翻页,但管道输入等情况下有使用限制。less通常提供更灵活的翻页与搜索功能。记住:"less is more"(less 比 more 功能更多)。
wc - 统计行数/单词数/字节数
# 统计行数(最常用)
wc -l data.csv
# 1000000 data.csv → 这个文件有 100 万行
# 统计单词数
wc -w readme.txt
# 统计字节数(文件大小)
wc -c data.bin
# 同时统计行/词/字节
wc data.csv
# 只显示数字(常用在脚本中)
wc -l < data.csv
tip 数据工作场景
# 验证数据行数(ETL 后验证数据量)
wc -l /data/raw/orders_20260318.csv
wc -l /data/processed/orders_20260318.csv
# 在预期行数不变的ETL中比较两个数字,初步发现行数差异;相同的行数不能证明没有丢失、重复或内容错误
# 统计错误日志行数
grep "ERROR" app.log | wc -l
vim - 够用就行
note 一个真实的建议
vim 是 Linux 上最强大的编辑器,但学到专家级需要很长时间。 作为数据工程师,你只需要会用 vim 完成基础操作:打开文件、找到位置、做简单修改、保存退出。
vim 的三种模式
vim 最难理解的地方是它有三种模式,新手经常不知道自己在哪个模式。
普通模式(Normal Mode)
├── 打开 vim 默认就在这里
├── 用于:移动光标、复制粘贴、删除
└── 按键是命令,不是输入文字
插入模式(Insert Mode)
├── 从普通模式按 i 进入
├── 用于:输入文字(和普通编辑器一样)
└── 按 Esc 回到普通模式
命令模式(Command Mode)
├── 从普通模式按 : 进入
├── 用于:保存、退出、查找替换
└── 输入命令后回车执行
最常用操作速查
打开文件:
vim filename.txt
退出 vim(新手最困惑的操作):
:q 退出(文件未修改时)
:q! 强制退出,不保存修改
:wq 保存并退出
:x 退出;文件内容已修改时才写入
ZZ 普通模式下退出;文件内容已修改时才写入
进入插入模式:
i 在光标前插入
a 在光标后插入
o 在当前行下方新开一行
O 在当前行上方新开一行
回到普通模式:
Esc
移动光标(普通模式):
h j k l 左 下 上 右(vim 党的标配)
方向键 也可以用(但 hjkl 更快)
gg 跳到文件开头
G 跳到文件末尾
:100 跳到第 100 行
搜索(普通模式):
/关键词 向下搜索
n 下一个匹配
N 上一个匹配
删除(普通模式):
x 删除光标处字符
dd 删除整行
3dd 删除 3 行
复制粘贴(普通模式):
yy 复制当前行
3yy 复制 3 行
p 粘贴到光标下方
撤销/重做:
u 撤销
Ctrl+r 重做
vim 实际应用示例
# 场景 1:修改配置文件中的一行
vim /etc/hadoop/core-site.xml
# 按 /hdfs 搜索关键词
# 找到那行,按 i 进入插入模式
# 修改内容
# 按 Esc 回到普通模式
# 输入 :wq 保存退出
# 场景 2:快速查看配置文件末尾
vim +G /etc/spark/spark-defaults.conf
# 打开后直接在文件末尾
# 场景 3:在文件末尾追加一行配置
vim +$ config.properties
# 按 o 在末尾新建一行
# 输入内容
# :wq 保存
tip vim 的 3 个最实用技巧
:set number:显示行号(排查错误时必备):%s/old/new/g:全文替换,在命令模式执行/错误关键词:在大配置文件里快速定位
warning 卡在 vim 里出不来?
如果你已经在 vim 里乱按了一通,不知道在哪个模式:
- 按多次
Esc,确保回到普通模式 - 输入
:q!(冒号、q、感叹号),回车 - 强制退出,不保存任何修改
nano - 简单编辑器(新手友好)
如果 vim 让你抓狂,用 nano。它更接近普通文本编辑器。
# 打开文件
nano config.txt
# 常用快捷键(屏幕底部会显示)
Ctrl+O 保存文件(Write Out)
Ctrl+X 退出
Ctrl+W 搜索
Ctrl+K 剪切当前行
Ctrl+U 粘贴
Ctrl+G 查看帮助
nano 的优点:所见即所得,快捷键显示在屏幕底部,不容易卡住。
缺点:功能比 vim 少,服务器上不一定有安装。
实战:分析一个 CSV 数据文件
# 场景:收到一个 sales_data.csv,需要快速了解数据内容
# 1. 查看文件大小和行数
ls -lh sales_data.csv # 文件大小
wc -l sales_data.csv # 行数
# 2. 查看文件头部(了解列结构)
head -3 sales_data.csv
# 3. 查看文件尾部(初步观察末尾格式,不能据此确认数据完整性)
tail -3 sales_data.csv
# 4. 打开 less 翻看数据
less sales_data.csv
# 5. 在 less 中搜索特定订单
# 输入 /ORDER123456 回车
# 6. 如果需要修改某个值,用 vim
vim sales_data.csv
# :/ORDER123456 搜索
# 修改,保存
快速参考
| 命令 | 场景 | 最常用参数 |
|---|---|---|
cat |
查看小文件、合并文件 | -n 行号 |
head |
看文件开头 N 行 | -n 20 |
tail |
看文件末尾 N 行 | -n 50,-f 实时 |
less |
翻页查看大文件 | +G 从末尾,+/关键词 搜索 |
wc -l |
统计行数 | -l 行,-c 字节 |
vim |
编辑文件 | :q! 退出,:wq 保存 |
nano |
简单编辑 | 屏幕底部有提示 |
掌握检查
- [ ] 知道
cat和less的使用场景区别:几十行的小文件用cat,几百 MB 的日志用less - [ ] 能用
tail -f app.log实时监控日志,并用Ctrl+C停止 - [ ] 能用
head -1 data.csv快速查看 CSV 表头,不需要打开整个文件 - [ ] 在 vim 中能完成:进入插入模式(
i)、退出并保存(:wq)、强制退出不保存(:q!)、搜索关键字(/关键词) - [ ] 能用
wc -l filename统计换行符数量;仅当每条记录占一行、只有一个表头行、没有额外空行且末行以换行符结束时,数据条数才等于该结果减1
实践练习
基础题:有一个日志文件 /var/log/syslog(或任意存在的日志),用 less 打开它,找到包含 error 关键字的行(不区分大小写),然后退出。再用 tail -20 查看最后 20 行。
进阶题:用 vim 打开 /tmp/test.conf(不存在则自动创建),写入三行内容:host=localhost、port=5432、db=mydb,保存退出后再用 cat 验证内容正确。
下一步
- grep/sed/awk - 在查看文件的基础上,用三剑客批量处理数据
- 管道与重定向 -
tail -f配合管道做实时日志过滤
#Linux #文件查看 #vim #tail #数据工程