对文件内容进行增删改查
grep
linux的文本三剑客:针对文本内容进行处理
1.grep :过滤(查找文本内容–正则表达式一块使用)查
2.sed:改(对文本内容进行修改)
3.awk:对行来进行取列,AWK自带编程,类java
grep命令都是对行来进行处理
-m 多个匹配,只取第一个 (m后面要加数字,数字可以自定义 不加就会报错)
-n 匹配行号 显示匹配内容以及匹配的行号
-o 仅显示匹配到的字符串,不再输出其他内容
-A after 后几行 显示匹配到的内容再加上自己定义的后几行内容一并显示出来 (必须要加数字)
-B before 前几行 显示匹配到的内容再加上自己定义的前几行内容一并显示出来 (必须要有数字)
-C 前后各几行 显示匹配到的行以及上下各几行
[root@localhost opt]# grep -C 3 'gdm' /etc/passwd
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
geoclue:x:993:988:User for geoclue:/var/lib/geoclue:/sbin/nologin
sssd:x:992:987:User for sssd:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:991:986::/run/gnome-initial-setup/:/sbin/nologin
方便对日志内容过滤。
-e :实现逻辑或的关系
-E :使用正则表达式
-f:过滤出两个文件的相同内容
-r:递归目录下,所有包含过滤内容的文件以及匹配的内容行,但是不出来硬软连接
-R:递归目录下,所有包含过滤内容的文件以及匹配的内容行,显示硬软连接
sort
以行为单位对文件的内容进行排序 ,也可以根据不同的数据类型进行排序
sort 选项 参数
cat /etc/passwd | sort 选项 参数
-b:忽略每行前面的空格,进行排序,而不是把空格缩进,有空格也不影响排序
-n:按照数字进行排序
-r:按照数字反向进行排序
-u:去重,相同的数据只显示一行
-o:输出文件,把排序后的结果,输出到指定的内容文件中
如何将原文件按照原本的顺序输出
怎么样不改变原文件的排序顺序,输出到另外一个文件中;
[root@localhost opt]# cat -n /etc/passwd | sort -n -o /opt/czy.txt
快捷去重uniq
uniq:报告或者忽略文件中连续的重复行
uniq 选项 参数
cat 文件 | uniq 选项
-c:统计连续重复的行的次数,合并重复的行
[root@localhost opt]# uniq -c 123.txt
2 1aaa
1 6abbb
1 4ccc
1 1aaa
1 5ddd
---------------
只对连续重复的有作用,如果中间隔开了有别的行,则无效
-u:显示仅出现一次的行(包括不连续的重复行)
[root@localhost opt]# uniq -u 123.txt
6abbb
4ccc
1aaa
5ddd
-d:仅显示重复出现的行(必须是连续的重复行)
[root@localhost opt]# uniq -d 123.txt
1aaa
tr
对字符进行替换,压缩,删除
tr 选项 参数
echo 123: | tr 选项
常用选项 :
-c :保留字符集1的字符 ,其他字符用字符集2来进行替换。 (字符集是我们来自定义的) 必须要保留,然后替换
-d :删除字符
-s:将重复出现的字符串压缩成一个字符。替换字符集
-t:替换
cut
对字段进行截取和剪裁
cut 选项 参数
cat 文件名 | cut 选项
-d :指定分隔符,截取字段
-f:对字段进行截取
cut -d ‘:’ -f 1,3,4 /etc/passwd
以冒号为分隔符,截取1和3和4列
-complement:排除所指定的字段
–output-delimiter :更改原内容的分隔符
[root@localhost opt]# head -n 3 /etc/passwd | cut -d ':' -f 1-3 --output-delimiter="@"
root@x@0
bin@x@1
daemon@x@2
-b:以字节为单位截取
-c:以字符为单位进行截取
cut和awk有相似之处,都是对行来取列
cut的默认分隔符是tab键
awk的默认分隔符就是空格,把多个连续的空格当做一个处理。
cut主要是用来切文本,指定分隔符明显 越准确越好 指向性越强越好
split
文件拆分: 可以把文件拆分成若干个小文件
==现在有一个日志文件–nginx–nginx.log----5G大小 ==
有什么办法可以提高这个文件的打开速度
用split对文件进行拆分
-l 指定行数拆分
-b 指定文件大小来进行拆分
[root@localhost opt]# split -l 20 test.txt czy
按行划分 20行一分
[root@localhost opt]# ls
czyaa czyab czyac test.txt
-----------------------
[root@localhost opt]# cat -n 20 czyaa
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13 nobody:x:99:99:Nobody:/:/sbin/nologin
14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15 dbus:x:81:81:System message bus:/:/sbin/nologin
16 polkitd:x:999:997:User for polkitd:/:/sbin/nologin
17 abrt:x:173:173::/etc/abrt:/sbin/nologin
18 libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
19 rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
20 colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
paste cat
分件合并
面试题:合并分件,paste , cat
paste:左右合并
cat:上下合并
如果合并了之后没有输出那就是临时看一眼,并没有保存
要输出了才能保存下来
==统计当前主机的连接状态 ==
有多少个
[root@localhost opt]# ss -nta | grep -v 'State' | cut -d " " -f 1 |sort |uniq -c
1 ESTAB
9 LISTEN
统计当前连接主机数
[root@localhost opt]# ss -nt | tr -s " " | cut -d ' ' -f 4 |sort -n | uniq -c
1 Local
2 192.168.233.50:22
正则表达式
匹配文件内容,根据特定的字符和表达式。
linux下:grep awk
nginx mysql配置文件也可以支持正则表达式
通配符和正则表达式的区别:
通配符匹配的是文件名:
*:匹配任意一个或者多个字符
?:匹配任意一个字符
[]:可以是范围匹配,也可以是单个字符
grep要用正则表达式一定要引起来 grep ’ ’ grep " "
正则表达式:
元字符
==. :表示的就是一个. 在正则表达式中是匹配任意单个字符 可以是一个汉字 ==
转义符:\ 就是将原来的意思变了
():分组 如果()要转义的话 \(\)
==[]:和通配符一样的意思 匹配任意范围内的单个字符 ==
==[==a-z]:取反^
[[:blank:]]匹配空格或者制表符(TAB键)
[:space:] 既能有空格,也能有制表符 包括换行符
[:cntrl:]匹配退格删除之类的