未记录事实核验 · 状态:现行内容

记录仅说明核验时间与维护状态,不保证适用于所有环境;使用前请留意正文中的版本、适用条件与风险提示。

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 个最实用技巧

  1. :set number:显示行号(排查错误时必备)
  2. :%s/old/new/g:全文替换,在命令模式执行
  3. /错误关键词:在大配置文件里快速定位

warning 卡在 vim 里出不来?

如果你已经在 vim 里乱按了一通,不知道在哪个模式:

  1. 按多次 Esc,确保回到普通模式
  2. 输入 :q!(冒号、q、感叹号),回车
  3. 强制退出,不保存任何修改

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 简单编辑 屏幕底部有提示


info 前置知识


掌握检查

  • [ ] 知道 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 验证内容正确。


下一步

#Linux #文件查看 #vim #tail #数据工程