Linux文本相关命令
Linux文本相关命令
文本排序命令
sort
常用参数:
-
-n:以数值大小进行排序
-
-r:逆序排序
-
-t:字段分隔符
-
-k:以哪个字段为关键字进行排序
-
-u:去重,排序后相同的行只显示一次
-
-f:排序时忽略字符大小写
示例:
[root@rh1 ~]# cat aa #查看文件aa内容
4
1
2
3
d
a
c
b
[root@rh1 ~]# sort -n aa #以数值大小进行排序
a
b
c
d
1
2
3
4
[root@rh1 ~]# sort -nr aa #以数值大小进行逆序排序
4
3
2
1
d
c
b
a
[root@rh1 ~]# sort -n -t : -k 3 /etc/passwd #以‘:’为分隔符的第三字段按照数值大小进行排序
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
文本去重命令
uniq
常用参数:
-c:显示文件中行连续重复的次数
-d:只显示连续重复的行
-u:只显示未连续重复的行
示例:
[root@rh1 ~]# cat aa
1
2
2
3
4
[root@rh1 ~]# uniq -c aa #显示文件中行连续重复的次数
1 1
2 2
1 3
1 4
[root@rh1 ~]# uniq -d aa #只显示连续重复的行
2
[root@rh1 ~]# uniq -u aa #只显示未连续重复的行
1
3
4
基础命令cut
从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
常用参数:
-
-d:指定字段分隔符,默认是空格
-
-f:指定要显示的字段
- -f 1,3:显示1和3字段
- -f 1-3:显示1到3字段
示例:
[root@rh1 ~]# cut -d : -f 1-3 /etc/passwd #显示/etc/passwd中以冒号为分隔符1至3字段所有字符
root:x:0
bin:x:1
daemon:x:2
adm:x:3
lp:x:4
sync:x:5
shutdown:x:6
halt:x:7
mail:x:8
operator:x:11
games:x:12
ftp:x:14
nobody:x:65534
dbus:x:81
systemd-coredump:x:999
systemd-resolve:x:193
tss:x:59
polkitd:x:998
unbound:x:997
sssd:x:996
sshd:x:74
rngd:x:995
abc:x:1000
文本三剑客
sed
文本替换命令
常用使用方法:
- sed -i 's/文本内原有的文字/想要替换的文字/替换的列数' 文件名
- sed -i 's/文本内原有的文字/想要替换的文字/g' 全部替换 文件名
示例:
[root@rh1 ~]# sed -i 's/hello/hi/1' aa #将文件aa内第一列的hello替换成hi
[root@rh1 ~]# cat aa
hi hello
hi hello
hi hello
nihao
nihao
[root@rh1 ~]# sed -i 's/hello/123/g' aa #将文件aa内全部的hello替换成123
[root@rh1 ~]# cat aa
hi 123
hi 123
hi 123
nihao
nihao
awk
文本提取命令
使用方法:
-F : 指定分隔符
NR==1 : 指定第1行
{print
示例:
[root@rh1 ~]# cat /etc/passwd #查看/etc/passwd下内容
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@rh1 ~]# awk -F ':' 'NR==2{print$1}' /etc/passwd #打印以冒号为分隔符第2行第一列的字符
bin
[root@rh1 ~]# ifconfig #查看网卡相关配置信息,发现IP地址和子网掩码分别位于以空格为分隔符的第2行 第2列和第4列
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.244.132 netmask 255.255.255.0 broadcast 192.168.244.255
inet6 fe80::a64f:4f2f:2f21:d89d prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:93:82:41 txqueuelen 1000 (Ethernet)
RX packets 6379 bytes 614033 (599.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4216 bytes 469545 (458.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@rh1 ~]# ifconfig | awk -F ' ' 'NR==2 {print$2,$4}' #利用管道符和awk命令打印IP地址和子网掩码
192.168.244.132 255.255.255.0
grep
文本过滤命令
根据正则表达式搜索文本,并将符合正则表达式的文本显示出来
默认使用基本正则表达式来过滤文本
常用参数:
- -i:忽略大小写
- -n:查找到的内容显示行数
- --color:匹配到的内容高亮显示
- -v:显示没有被正则表达式匹配到的内容
- -o:只显示被正则表达式匹配到的内容
- -E:使用扩展正则表达式,等同于egrep
- -q:静默模式,不输出任何信息
- -A #:此处的#必须是数字。被正则匹配到的内容以及其后面#行的内容都显示出来
- -B #:此处的#必须是数字。被正则匹配到的内容以及其前面#行的内容都显示出来
- -C #:此处的#必须是数字。被正则匹配到的内容及其前后各#行的内容都显示出来
示例:
[root@rh1 ~]# cat a.txt
AA 22
aa 333
aa 444
AA 111
[root@rh1 ~]# grep -i aa a.txt #匹配内容为aa,不区分大小写
AA 22
aa 333
aa 444
AA 111
[root@rh1 ~]# grep -v [a-z] a.txt #匹配a到z之外的内容
AA 22
AA 111
[root@rh1 ~]# grep -o [a-z] a.txt #只匹配a-z的内容
a
a
a
a
[root@rh1 ~]# egrep -o a{2} a.txt #此处为扩展正则表达式,重复匹配字符a两次
aa
aa
[root@rh1 ~]# cat b.txt #查看b.txt的文件内容
aa bb cc
11 22 33
qq ww ee
zz dd vv
[root@rh1 ~]# grep -A 2 22 b.txt #匹配字符22那一行极其后两行内容
11 22 33
qq ww ee
zz dd vv
[root@rh1 ~]# grep -A 1 -B 1 ww b.txt #匹配字符ww那一行及其前一行后一行内容
11 22 33
qq ww ee
zz dd vv
[root@rh1 ~]# grep -C 1 ww b.txt #匹配字符ww那一行及其前一行后一行内容
11 22 33
qq ww ee
zz dd vv
cat
拼接文件内容并输出至标准输出(屏幕)
常用参数:
- -n:显示行号
示例:
[root@rh1 ~]# cat -n bbb #将文件bbb的内容输出至屏幕并显示行号
1 qwer
2 asd
3 a
4 sad
5 zx
6 z
7 d
8
9
tac
连接文件并倒序打印内容至标准输出
示例:
[root@rh1 ~]# tac bbb #连接文件并倒序打印内容至标准输出
d
z
zx
sad
a
asd
qwer
more
全屏查看文本文件内容,看完自动退出
示例:
[root@rh1 ~]# tac bbb #全屏查看文本文件内容,看完自动退出
d
z
zx
sad
a
asd
qwer
less
全屏查看文本文件内容,可从前往后看亦可从后往前看,看完不会自动退出
示例:
[root@rh1 ~]# less bbb #查看文件bbb内容,默认不退出,按q退出
qwer
asd
a
sad
zx
z
d
bbb(END)
head
从文件首部开始打印文件内容,默认打印10行
常用参数:
- -n 15:查看文件前15行的内容
示例:
[root@rh1 ~]# head -3 bbb #查看文件bbb前3行内容
qwer
asd
a
tail
从文件尾部开始打印文件内容,默认打印10行
常用参数:
-
-n 15:查看文件尾部15行的内容
-
-f:实时查看文件的更新
示例:
[root@rh1 ~]# tail -5 bbb #查看文件bbb倒数五行内容(回车也算一行)
zx
z
d
wc
文本统计
常用参数:
-
-c:统计文本字节数
-
-w:统计文本单词数
-
-l:统计文本行数
示例:
[root@rh1 ~]# wc -c bbb
24 bbb
[root@rh1 ~]# wc -w bbb
7 bbb
[root@rh1 ~]# wc -l bbb
9 bbb
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?