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$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
posted @ 2022-08-04 17:03  Archer-x  阅读(35)  评论(0编辑  收藏  举报