文本三剑客 正则表达式

对文件内容进行增删改查

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:]匹配退格删除之类的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早上的星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值