Linux文本相关命令

2022-12-07,,,

Linux文本相关命令

目录
Linux文本相关命令
文本排序命令
文本去重命令
基础命令cut
文本三剑客
sed
awk
grep

文本排序命令

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$1,$3} : 指定第一列,第三列

示例:

[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

Linux文本相关命令的相关教程结束。

《Linux文本相关命令.doc》

下载本文的Word格式文档,以方便收藏与打印。