寺中人头像
CentOS 7 文件查看与编辑操作完全入门指南封面图

CentOS 7 文件查看与编辑操作完全入门指南

目录

第 3 章 文本查看与处理

3.1 文本查看:cat、more、less、head、tail

cat

more

less

head

tail

3.2 文本搜索:grep

grep

3.3 文本处理三剑客:sed、awk

sed

awk

3.4 排序、去重与统计:sort、uniq、wc

sort

uniq

wc

3.5 文本截取与转换:cut、tr、paste、join、diff

cut

tr

paste

join

diff

第 4 章 Vim 编辑器

4.1 三种工作模式

4.2 光标移动(命令模式)

4.3 插入与删除(命令模式)

4.4 复制、剪切与粘贴(命令模式)

4.5 查找与替换

4.6 保存与退出(末行模式)


        【连载实训笔记】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 长文件   # 横向滚动,不折行

查看文件开头部分,默认前 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

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--