文本三剑客之grep

文本三剑客之grep_第1张图片

目录

​编辑

前言

一、grep基本介绍

二、 sort命令

 常用选项:

三、 快捷去重——uniq:

格式

四、tr 

五、快速裁剪命令—cut

六、文件拆分—split

七、文件合并—paste

面试题  

一、统计当前主机的连接状态

二、统计当前连接主机数


前言

awk、grep、sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。


一、grep基本介绍

grep 命令是inux 系统中一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是 Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

书写基本格式:

grep [选项]… 查找条件 目标文件

选项:

-m    #匹配几次后停止
-v    #取反
-i    #忽略字符大小写,可有可无
-n    #显示匹配的行号
-c    #统计匹配行数
-o    #仅显示匹配到的字符串
-q    #静默模式,不输出任何信息
-A    #仅显示当前该行的下几行,包括本行内容,
-B    #仅显示当前该行的上几行,包括本行内容;
-e    #实现多行之间的逻辑or关系,
-w    #匹配整个单词
-E    #使用ere,相当于egrep,使用扩展正则
-F    #处理两个文件中相同的内容,第一个文件作为匹配条件
-r    #递归目录,但不处理软连接
-R    #递归目录,处理软连接
 

 grep -m 1 root /etc/passwd

文本三剑客之grep_第2张图片

 grep -Ev '^[[:space:]]*#|^$' /etc/fstab

 grep -c root /etc/passwd    #统计匹配到的行数

 grep -A3 root /etc/passwd   #匹配到的行的后3行也显示出来

 文本三剑客之grep_第3张图片

 grep -e root -e bash /etc/passwd

#包含root或者包含bash 的行

文本三剑客之grep_第4张图片  grep -f 123.txt 456.txt

#匹配两个文件中内容相同的部分

文本三剑客之grep_第5张图片

 grep -r a /opt

#递归过滤目录中的文件

文本三剑客之grep_第6张图片

root@test1 opt]# cat 123.txt |grep -v '^$' >test.txt  //将非空行写入到test.txt文件
[root@test1 opt]# grep "^b" 123.txt    //过滤已b开头
[root@test1 opt]#grep '/$'  123.txt    //过滤已/结尾

二、 sort命令

以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序

语法格式:

sort 选项 参数
cat file | sort 选项

 常用选项:

-f:忽略大小写,默认会大写字母排在前面
-b:忽略每行前面的空格
-n:按照数字进行排序
-r:反向排序
-u:等同uniq,表示相同的数据仅显示一行,去重
-t:指定字段分隔符,默认使用tab键分隔
-k:指定排序字段
-o <输出文件>:将排序后的结果转存至指定文件

三、 快捷去重——uniq:

uniq命令用于报告或者忽略文件中连续的重复行,常与sort命令结合使用。

格式

uniq [选项] 参数  ​
cat 文件| uniq 选项
-c    统计连续重复的行的次数,并且合并重复的行
-u    显示仅出现一次的行(包括不连续的重复行)
-d    仅显示重复出现的行(必须是连续的重复行)

四、tr 

对来自标准输出的内容进行替换,压缩,删除

书写方式

tr 选项 参数

常用选项:

-c:保留字符集1的字符,其他的字符(包括换行符\n)用字符集2替换
-d:删除所有属于字符集1的字符
-s:将重复出现的字符串压缩为一个字符串,用字符集2 替换 字符集1
-t:字符集2 替换 字符集1,不加也行

五、快速裁剪命令—cut

书写格式

cut [选项] 参数
cat file | cut [选项] 

 常用选项

-d              指定分隔符(默认分隔符为Tab)
-f               按字段进行截取。指定第n个字段;
-b              以字节为单位进行截取
-c              以字符为单位进行截取
–complement      排除所指定的字段

–output-delimiter    更改输出内容的分隔符

六、文件拆分—split

split命令用于在Linux下将大文件拆分为若干小文件。

格式:split 选项 参数 原始文件 拆分后文件名前缀

 选项

-l    指定行数
-b    指定文件的大小

七、文件合并—paste

 按照字段来进行文件的合并

书写格式

paste   [选项]    文件1     文件2

选项 

 -d    用于指定文件的分隔符(默认情况下为制表符"\n")
-s    将列和行的内容进行互相交换

面试题  

一、统计当前主机的连接状态

[root@localhost ~]# ss -nta | grep -v '^State' |cut -d " " -f 1| sort | uniq -c

3 ESTAB   #表示建立的 TCP 连接处于活动状态

17 LISTEN

二、统计当前连接主机数

[root@localhost opt]# ss -nt | tr -s " "|cut -d " " -f 5 | sort -n | uniq -c
      1 Local
      2 192.168.233.21:22

你可能感兴趣的:(服务器,运维)