Linux文本处理基础
查看完整文件:cat
cat 会把文件内容直接输出到终端。
cat 文件常用选项:
| 选项 | 作用 |
|---|---|
-n | 显示所有行行号 |
-b | 只给非空行编号 |
-s | 将连续空行压缩为一行 |
示例:
cat -n nginx.confcat 适合查看内容不长的文件。如果文件很大,建议使用 less、more、head 或 tail。
分页查看:more 和 less
more 可以分页查看文件。
more 文件常用操作:
| 按键 | 作用 |
|---|---|
| 空格 | 下一页 |
| 回车 | 下一行 |
b | 上一页 |
q | 退出 |
less 功能更强,也更常用:
less 文件常用操作:
| 按键 | 作用 |
|---|---|
| 空格 | 下一页 |
b | 上一页 |
/关键字 | 搜索关键字 |
n | 下一个匹配 |
N | 上一个匹配 |
q | 退出 |
查看日志或配置文件时,less 比 cat 更稳,因为它不会一次性刷满终端。
查看文件开头和结尾:head、tail
查看文件前几行:
head 文件head -n 20 文件查看文件最后几行:
tail 文件tail -n 50 文件持续跟踪文件变化:
tail -f app.logtail -f 是看实时日志的常用命令。退出时按 Ctrl+C。
搜索文件内容:grep
grep 用来按关键字过滤文本。
grep [选项] 关键字 文件常用选项:
| 选项 | 作用 |
|---|---|
-n | 显示匹配行号 |
-v | 反向匹配,显示不包含关键字的行 |
-i | 忽略大小写 |
-r | 递归搜索目录 |
示例:
grep -n "error" app.loggrep -i "failed" app.loggrep -v "#" nginx.confgrep -r "server_name" /etc/nginx一些常用匹配:
grep "^root" /etc/passwdgrep "bash$" /etc/passwdgrep "^$" file.txt含义分别是:匹配以 root 开头的行、匹配以 bash 结尾的行、匹配空行。
查找文件:find
find 用来在目录中查找文件或目录。
find 路径 条件按名称查找:
find /etc -name "*.conf"按类型查找:
find /var/log -type ffind /home -type d按大小查找:
find /var/log -type f -size +100M常见类型:
| 类型 | 含义 |
|---|---|
f | 普通文件 |
d | 目录 |
find 的搜索范围越大,耗时越长。实际使用时最好先限定目录,比如从 /var/log、/etc、项目目录开始。
统计文本:wc
wc 用来统计文件内容。
wc [选项] 文件常用选项:
| 选项 | 作用 |
|---|---|
-l | 统计行数 |
-w | 统计单词数 |
-c | 统计字节数 |
-m | 统计字符数 |
示例:
wc -l app.logwc -w article.md配合管道可以统计搜索结果:
grep "ERROR" app.log | wc -l这表示统计日志中包含 ERROR 的行数。
管道符:|
管道符 | 的作用是把左边命令的输出,作为右边命令的输入。
命令1 | 命令2示例:
cat app.log | grep "ERROR"ps -ef | grep nginxfind /etc -name "*.conf" | wc -l管道可以连续使用:
cat app.log | grep "ERROR" | grep "timeout"这表示先找出包含 ERROR 的日志,再从结果中找出包含 timeout 的行。
输出和重定向:echo、>、>>
echo 用来输出内容:
echo "hello linux"使用 > 可以覆盖写入文件:
echo "hello" > a.txt使用 >> 可以追加写入文件:
echo "world" >> a.txt错误输出可以使用 2> 重定向:
ls /not-exist 2> error.log注意:> 会覆盖文件原内容,写配置或日志时要确认是否真的需要覆盖。
反引号和命令替换
被反引号包围的内容会作为命令执行:
echo `pwd`输出当前工作目录。
现代 Shell 中更推荐使用 $(),可读性更好:
echo "$(pwd)"例如创建带日期的备份文件:
cp app.log "app-$(date +%Y%m%d).log"vim 编辑器入门
vim 是 Linux 中非常常见的文本编辑器。它至少要理解三种模式:
| 模式 | 作用 |
|---|---|
| 命令模式 | 默认模式,用来移动、复制、删除 |
| 输入模式 | 输入文本 |
| 末行模式 | 保存、退出、替换、设置行号 |
从命令模式进入输入模式:
| 按键 | 作用 |
|---|---|
i | 在光标前插入 |
a | 在光标后插入 |
o | 在下一行插入新行 |
命令模式常用操作:
| 按键 | 作用 |
|---|---|
G | 跳到最后一行 |
50gg | 跳到第 50 行 |
10dd | 删除 10 行 |
10yy | 复制 10 行 |
p | 粘贴 |
末行模式常用操作:
:set nu:set nonu:w:q:wq:q!含义分别是显示行号、取消行号、保存、退出、保存并退出、强制退出不保存。
文本替换:
:s/old/new:s/old/new/g:%s/old/new/g含义分别是替换当前行第一个匹配、替换当前行所有匹配、替换全文所有匹配。
本篇命令速查
| 命令 | 作用 |
|---|---|
cat -n 文件 | 查看文件并显示行号 |
less 文件 | 分页查看文件 |
head -n 20 文件 | 查看前 20 行 |
tail -n 50 文件 | 查看最后 50 行 |
tail -f 日志 | 实时跟踪日志 |
grep -n 关键字 文件 | 搜索关键字并显示行号 |
find 路径 -name 名称 | 按名称查找 |
wc -l 文件 | 统计行数 |
| `命令1 | 命令2` |
echo 内容 > 文件 | 覆盖写入 |
echo 内容 >> 文件 | 追加写入 |
vim 文件 | 编辑文件 |














