目录
3.1 文本查看:cat、more、less、head、tail
3.5 文本截取与转换:cut、tr、paste、join、diff
【连载实训笔记】CentOS7 文件查看与 Vim 编辑器。在 Linux 运维工作中,查看日志、读取配置文件、修改服务配置都离不开文件查看命令与文本编辑器。本文汇总常用文件查看指令,区分不同命令的适用场景,同时梳理 Vim 核心操作命令,避开新手常见报错。内容分批发布,为本系列其中一篇,所有命令都可以直接在 CentOS7 环境中测试使用。
第 3 章 文本查看与处理
Linux 世界一切皆文件,大量配置和数据以文本形式存在。掌握文本查看与处理工具,是高效运维的基础。
3.1 文本查看:cat、more、less、head、tail
cat
Concatenate,连接并显示文件内容,也常用于合并文件。
语法格式:
cat [选项] 文件
常用选项说明:
-n 显示行号
-b 只给非空行加行号
-s 压缩连续多个空行为一行
-E 在每行末尾显示 $ 符
-T 把制表符显示为 ^I
-A 显示所有不可见字符(等价于 -vET)
-v 显示非打印字符
典型示例:
cat /etc/hosts # 查看 hosts 文件
cat -n a.txt # 带行号查看
cat a.txt b.txt > c.txt # 合并两个文件
cat -s a.txt # 压缩连续空行
more
分页显示文件内容,按空格翻页、按 q 退出。
语法格式:
more [选项] 文件
常用选项说明:
-数字 每屏显示的行数
-d 提示翻页操作说明
典型示例:
more /var/log/messages
more -10 /etc/passwd # 每屏显示 10 行
less
更强大的分页查看工具,支持上下翻页、搜索、前进后退。推荐优先使用。
语法格式:
less [选项] 文件
常用选项说明:
-N 显示行号
-S 超宽行不换行,用 → 横向滚动查看
-i 搜索时忽略大小写
-m 显示百分比进度
-F 文件内容少于一屏时直接退出
典型示例:
less /etc/passwd # 打开后:/关键字搜索,n 下一个,N 上一个,q 退出
less -N /etc/passwd # 带行号查看
less -S 长文件 # 横向滚动,不折行
head
查看文件开头部分,默认前 10 行。
语法格式:
head [选项] 文件
常用选项说明:
-n 行数 指定查看的行数
-c 字节数 指定查看的字节数
-q 多个文件时不显示文件头标题
典型示例:
head /etc/passwd # 前 10 行
head -n 20 a.log # 前 20 行
head -c 100 a.log # 前 100 字节
tail
查看文件末尾部分,默认后 10 行,常用于跟踪日志。
语法格式:
tail [选项] 文件
常用选项说明:
-n 行数 指定查看的行数
-c 字节数 指定查看的字节数
-f 实时跟踪文件新增内容(Ctrl+C 退出)
-F 文件被轮转后仍持续跟踪
-q 多个文件时不显示文件头标题
典型示例:
tail /var/log/messages # 后 10 行
tail -n 50 a.log # 后 50 行
tail -f /var/log/secure # 实时跟踪登录日志
tail -n 0 -f a.log # 只跟踪新增加的日志
3.2 文本搜索:grep
grep
Global Regular Expression Print,在文件中按模式搜索并输出匹配行,是日志分析的利器。
语法格式:
grep [选项] 模式 文件
常用选项说明:
-i 忽略大小写
-n 显示匹配行所在的行号
-v 反向选择,输出不匹配的行
-r 递归搜索目录
-R 递归搜索目录并跟随符号链接
-w 整词匹配
-c 统计匹配的行数
-E 使用扩展正则表达式(等价于 egrep)
-l 只列出包含匹配内容的文件名
-L 只列出不包含匹配内容的文件名
-o 只输出匹配到的部分,而不是整行
-A 行数 同时输出匹配行之后的 N 行(after)
-B 行数 同时输出匹配行之前的 N 行(before)
-C 行数 同时输出匹配行前后各 N 行(context)
-e 模式 指定多个匹配模式,可重复使用
-f 文件 从文件中读取匹配模式
--color 匹配内容高亮显示
-m 数量 最多匹配 N 行后停止
-x 整行完全匹配才输出
典型示例:
grep root /etc/passwd # 搜索包含 root 的行
grep -in "error" /var/log/messages # 忽略大小写带行号
grep -v "^#" /etc/ssh/sshd_config # 排除注释行
grep -E "^[0-9]{3}-" a.txt # 用扩展正则匹配
ps aux | grep nginx # 过滤进程列表
grep -rni "error" /var/log/ # 递归忽略大小写搜索
grep -C 3 "fail" a.log # 输出匹配行前后各 3 行
grep -l "password" /etc/*.conf # 列出包含该内容的文件
3.3 文本处理三剑客:sed、awk
sed
Stream Editor,流式文本编辑器,按行读取、处理并输出,擅长替换、删除、插入和定位行。
语法格式:
sed [选项] "命令" 文件
常用选项说明:
-n 只输出被处理的行(与 p 配合)
-i 直接修改原文件(不加会只输出不写文件)
-i.bak 修改原文件前先备份为 .bak
-e 执行多个编辑命令,可重复使用
-f 脚本文件 从脚本文件读取 sed 命令
-r 使用扩展正则表达式
典型示例:
sed 's/old/new/' a.txt # 每行第一个 old 换成 new
sed 's/old/new/g' a.txt # 全部替换
sed -i 's/old/new/g' a.txt # 替换并写回原文件
sed -i.bak 's/old/new/g' a.txt # 替换前备份
sed -n '5,10p' a.txt # 输出第 5 到 10 行
sed '/^$/d' a.txt # 删除所有空行
sed -n '1p;5p' a.txt # 输出第 1 和第 5 行
sed -e 's/a/A/' -e 's/b/B/' a.txt # 多个替换
awk
强大的文本处理语言,默认按空格/制表符切分字段,逐行处理。awk 擅长统计、格式化输出和按条件取数。
语法格式:
awk [选项] "模式{动作}" 文件
常用选项说明:
-F 分隔符 指定字段分隔符,默认是空白
-v 变量=值 在 awk 程序执行前赋值变量
-f 脚本文件 从脚本文件读取 awk 程序
-O 启用优化模式
典型示例:
awk '{print $1}' a.txt # 输出每行第 1 个字段
awk -F: '{print $1, $3}' /etc/passwd # 按冒号切分,输出用户名和 UID
awk '$3>1000{print $1}' a.txt # 第 3 字段大于 1000 才输出
awk 'NR>=5 && NR<=10' a.txt # 输出第 5 到 10 行
awk '{sum+=$1} END{print sum}' a.txt # 求第 1 字段的总和
awk 'BEGIN{FS=":"} {print NF}' /etc/passwd # 统计每行字段数
awk -v x=5 '$1>x' a.txt # 用外部变量参与比较
ps aux | awk '{print $2, $11}' # 提取 PID 和命令
awk 中 $0 表示整行,$1、$2… 表示第 1、2… 个字段;NR 是当前行号,NF 是当前行字段数,FS 是字段分隔符。
3.4 排序、去重与统计:sort、uniq、wc
sort
对文本行进行排序。
语法格式:
sort [选项] 文件
常用选项说明:
-n 按数值大小排序
-r 降序排序
-k 列 按指定列排序
-t 分隔符 指定列分隔符
-u 排序并去重
-f 排序时忽略大小写
-b 忽略行首的空格
-c 检查文件是否已排序
-m 合并多个已排序文件
-o 文件 把结果写入文件
-h 按人类可读的数字大小排序(K、M、G)
典型示例:
sort a.txt # 字典序排序
sort -n a.txt # 数值排序
sort -t: -k3 -n /etc/passwd # 按冒号分隔的第 3 列数值排序
sort -rn a.txt # 数值降序
sort -o a.txt a.txt # 排序后写回原文件
uniq
去除相邻重复行,通常先排序再使用。
语法格式:
uniq [选项] 文件
常用选项说明:
-c 统计每行重复的次数
-d 只输出重复的行
-u 只输出不重复的行
-i 比较时忽略大小写
-f 列数 比较时跳过前 N 个字段
-s 字符数 比较时跳过前 N 个字符
典型示例:
sort a.txt | uniq # 去重
sort a.txt | uniq -c # 统计每项出现次数
sort a.txt | uniq -c | sort -rn # 按出现次数从高到低排序
sort a.txt | uniq -u # 只输出不重复的行
wc
Word Count,统计行数、单词数和字符数。
语法格式:
wc [选项] 文件
常用选项说明:
-l 只统计行数
-w 只统计单词数
-c 只统计字节数
-m 只统计字符数
-L 显示最长行的长度
典型示例:
wc -l /etc/passwd # 统计行数
cat a.txt | wc -l # 统计管道输出行数
wc -w a.txt # 统计单词数
wc -L a.txt # 最长行长度
3.5 文本截取与转换:cut、tr、paste、join、diff
cut
按列或按分隔符截取文本片段。
语法格式:
cut [选项] 文件
常用选项说明:
-d 分隔符 指定字段分隔符
-f 字段 指定输出哪些字段,支持 1-3、1,3
-c 字符 按字符位置截取
-b 字节 按字节位置截取
-s 不输出不含分隔符的行
--complement 输出指定字段之外的所有字段
典型示例:
cut -d: -f1,7 /etc/passwd # 输出第 1、7 字段
cut -c1-10 a.txt # 截取每行前 10 个字符
cut -d: -f1-3 /etc/passwd # 输出第 1 到 3 字段
tr
Translate,替换或删除字符集。
语法格式:
tr [选项] "字符集1" "字符集2"
常用选项说明:
-d 删除指定字符
-s 压缩连续重复字符
-t 把字符集1 截断到与字符集2 等长
-c 对补集操作(除指定字符外的其他字符)
典型示例:
echo abc | tr 'a-z' 'A-Z' # 小写转大写
cat a.txt | tr -d '\r' # 删除回车符
cat a.txt | tr -s ' ' # 把连续空格压缩为一个
echo 'a b c' | tr -s ' ' # 压缩空格
paste
按行将多个文件横向拼接。
语法格式:
paste [选项] 文件1 文件2
常用选项说明:
-d 分隔符 指定列分隔符,如 -d:
-s 把每个文件的每一行拼接成一行(竖转横)
典型示例:
paste a.txt b.txt # 两文件按行并排
paste -d: a.txt b.txt # 用冒号分隔
paste -s a.txt # 把多行并成一行
join
按共同字段将两个文件的记录连接。
语法格式:
join [选项] 文件1 文件2
常用选项说明:
-t 分隔符 指定字段分隔符
-1 列 指定文件1 的连接字段列
-2 列 指定文件2 的连接字段列
-a 文件号 输出未匹配的行
典型示例:
join a.txt b.txt # 按第一列共同键连接
join -1 1 -2 1 a.txt b.txt # 指定连接列
diff
逐行比较两个文件的差异。
语法格式:
diff [选项] 文件1 文件2
常用选项说明:
-u 统一格式输出,易读
-r 递归比较目录
-c 上下文格式输出
-i 比较时忽略大小写
-w 比较时忽略空白字符
-q 只报告文件是否不同,不显示差异内容
-y 并排输出两文件差异
典型示例:
diff a.txt b.txt # 显示两文件差异
diff -u a.txt b.txt # 统一格式对比
diff -q a.txt b.txt # 只判断是否不同
diff -r dir1 dir2 # 递归比较目录
第 4 章 Vim 编辑器
Vim 是 Linux 下最强大的文本编辑器,几乎所有发行版都自带 vi/vim。在服务器上编辑配置文件、写脚本都离不开它。本章按“模式—移动—编辑—保存”的顺序讲解核心用法。
4.1 三种工作模式
Vim 有三种主要模式:命令模式(Normal,刚进入时的默认模式,用于移动光标和执行命令)、插入模式(Insert,用于输入文字)、末行模式(Command-line/Ex,用于保存、退出、替换等)。
vim a.txt # 用 vim 打开文件
i # 在光标前进入插入模式
Esc # 回到命令模式
:wq # 末行模式,保存并退出
三个模式的切换:命令模式 -i/a/o-> 插入模式;Esc -> 命令模式;: -> 末行模式
4.2 光标移动(命令模式)
h j k l # 左 下 上 右 移动一个字符
0 # 跳到行首
$ # 跳到行尾
gg # 跳到文件第一行
G # 跳到文件最后一行
:100 # 跳到第 100 行(末行模式)
w / b # 跳到下一个 / 上一个单词开头
Ctrl + f / b # 向下 / 向上翻页
4.3 插入与删除(命令模式)
i # 在光标前插入
a # 在光标后插入
o # 在当前行下方新增一行并插入
O # 在当前行上方新增一行并插入
x # 删除光标所在字符
dd # 删除当前行
5dd # 删除 5 行
dw # 删除光标后一个单词
d$ # 删除到行尾
u # 撤销上一次操作
Ctrl + r # 重做(撤销的撤销)
4.4 复制、剪切与粘贴(命令模式)
yy # 复制当前行
5yy # 复制 5 行
yw # 复制一个单词
p # 粘贴到光标之后
P # 粘贴到光标之前
dd 后再 p # 剪切(删除)后粘贴 = 移动
v + 移动 + y # 可视模式选中后复制
4.5 查找与替换
/keyword # 向下查找 keyword,n 下一个,N 上一个
?keyword # 向上查找
:s/old/new/g # 当前行全部替换
:%s/old/new/g # 全文替换,g 表示全部
:%s/old/new/gc # 全文替换,c 表示逐个确认
:%s/old/new/gi # 全文替换,忽略大小写
4.6 保存与退出(末行模式)
:w # 保存
:q # 退出(未保存会提示)
:wq # 保存并退出
:q! # 强制退出,不保存
:wq! # 强制保存并退出
ZZ # 命令模式下保存并退出
:x # 保存并退出(仅当有改动)
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2301_81401822/article/details/169428579




