Shell脚本攻略:文本三剑客之grep

目录

一、理论

1.grep

2.sort

3.uniq

4.tr

5.cut

6.split

7.paste

二、实验

1. grep

​编辑

​编辑

2.sort

3.uniq

​编辑

4.tr

5.cut

6.split

7.统计当前主机的连接状态

8.统计当前连接主机数

9.获取信息


一、理论

1.grep

(1)概念

grep是Linux中最常用的”文本处理工具”之一,grep与sed、awk合称为Linux中的三剑客。

grep的全称为: Global search Regular Expression and Print out the line

全称中的”Global search”为全局搜索之意。

全称中的”Regular Expression”表示正则表达式。

所以,从grep的全称中可以了解到,grep是一个可以利用”正则表达式”进行”全局搜索”的工具,grep会在文本文件中按照指定的正则进行全局搜索,并将搜索出的行打印出来。

(2)语法格式

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

表1 grep常用选项

选项 功能
-m 匹配#次后停止
-v 显示不被pattern匹配到的行,即取反
-i 忽略字符大小写  #可有可无
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q  静默模式,不输出任何信息
-A # after, 后#行 
-B # before, 前#行
-C # context, 前后各#行
-e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ' -e ‘dog' file
-w 匹配整个单词
-E 使用ERE,相当于egrep,使用扩展正则
-F 不支持正则表达式
-f file 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件
-r 递归目录,但不处理软链接
-R 递归目录,但处理软链接

2.sort

(1)概念

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

(2)语法格式

sort 选项 参数
cat file | sort 选项

表2 sort常用选项

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

3.uniq

(1)概念

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

uniq [选项] 参数  ​
cat 文件| uniq 选项

表3 uniq常用选项

选项 功能
c 统计连续重复的行的次数,并且合并重复的行
u 显示仅出现一次的行(包括不连续的重复行)
d 仅显示重复出现的行(必须是连续的重复行)

4.tr

 (1) 概念

常用于对来自标准输入的字符进行替换、压缩和删除

(2)语法格式

tr 选项 参数

表4 tr常用选项

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

表5 参数 

参数 功能
字符集1 指定要转换或删除的原字符集。当执行转换操作时,
必须使用参数”字符集2“指定转换操作时,必须使用参数”字符集2“指定转换的目标字符集。
但执行删除操作时,不需要参数”字符集2“
字符集2 指定要转换成的目标字符集

5.cut

(1)概念

快速裁剪命令,对字段进行截取和剪裁。

(2)语法格式

格式一:cut [选项] 参数
格式二:cat file | cut [选项] 

表6 cut常用选项

选项 功能
d  指定分隔符(默认分隔符为Tab)
f 按字段进行截取。指定第n个字段
b 以字节为单位进行截取
c 以字符为单位进行截取
-complement 排除所指定的字段
–output-delimiter 更改输出内容的分隔符

6.split

(1)概念

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

(2)语法格式

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

表7 split常用选项 

选项 功能
l 指定行数
b 指定文件大小

7.paste

(1)概念

文件合并,按照字段来进行文件的合并,左右合并。

(2)语法格式

paste   [选项]    文件1     文件2
                                                     表8 paste常用选项

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

二、实验

1. grep

(1)多个匹配只取第一个

(2)统计匹配到的行数

(3)匹配到的行的后3行也显示出来

Shell脚本攻略:文本三剑客之grep_第1张图片

         匹配到的行的前3行也显示出来

Shell脚本攻略:文本三剑客之grep_第2张图片

        匹配到的行的前后各3行也显示出来

 Shell脚本攻略:文本三剑客之grep_第3张图片

(4)显示包含root或者包含bash 的行

Shell脚本攻略:文本三剑客之grep_第4张图片

(5)匹配整个单词

 (6)匹配两个文件中内容相同的部分

 (7)递归过滤目录中的文件,但不处理软链接

(8)递归目录,但处理软链接

 

(9)将非空行写入到test.txt文件

Shell脚本攻略:文本三剑客之grep_第5张图片

过滤以b开头

过滤以/结尾

2.sort

(1)按数字大小进行排序

Shell脚本攻略:文本三剑客之grep_第6张图片

(2)倒序排列

Shell脚本攻略:文本三剑客之grep_第7张图片

(3)重复的数据只展示一次,相当于去重

Shell脚本攻略:文本三剑客之grep_第8张图片

 Shell脚本攻略:文本三剑客之grep_第9张图片

(4)把整个passwd的文件,传给test.txt

Shell脚本攻略:文本三剑客之grep_第10张图片

(5)按照源文件的顺序传

Shell脚本攻略:文本三剑客之grep_第11张图片

3.uniq

(1) 只显示出现一次的行

Shell脚本攻略:文本三剑客之grep_第12张图片

(2)只显示连续重复的行

(3)对重复的数据行计数,并且去重输出

Shell脚本攻略:文本三剑客之grep_第13张图片

(4)只展示不重复的数据行

(5)只展示重复的数据行

4.tr

(1) 把"." ,替换成冒号

(2)大写替换成小写

 

 (3)保留了ab,替换了c,输出aa

 (4)删除ab,打印c

 (5)排序输出,压缩空行为一个

Shell脚本攻略:文本三剑客之grep_第14张图片

Shell脚本攻略:文本三剑客之grep_第15张图片

 (6)把":"替换为换行

 Shell脚本攻略:文本三剑客之grep_第16张图片

5.cut

(1)以":"作为分隔符,指定第一个到第三个字段进行输出

Shell脚本攻略:文本三剑客之grep_第17张图片

(2) 指定以":"作为分隔符,但是删除了第二个字段进行输出

(3)将分隔符转换为@,进行输出

6.split

(1)指定文件大小,不需要大小写

(2)指定每2行拆分为1个文件

Shell脚本攻略:文本三剑客之grep_第18张图片

Shell脚本攻略:文本三剑客之grep_第19张图片

7.统计当前主机的连接状态

(1)获取所有tcp信息

Shell脚本攻略:文本三剑客之grep_第20张图片

 (2)取反不显示第一行

Shell脚本攻略:文本三剑客之grep_第21张图片

(3)以空格为分隔符,裁剪第1列

Shell脚本攻略:文本三剑客之grep_第22张图片

(4)排序

Shell脚本攻略:文本三剑客之grep_第23张图片

(5)去重(统计连续重复的行的次数,并且合并重复的行)

 

8.统计当前连接主机数

(1)获取tcp信息

Shell脚本攻略:文本三剑客之grep_第24张图片

 (2)多空格缩为1个空格

Shell脚本攻略:文本三剑客之grep_第25张图片

 (3)以空格为分隔符,裁剪第4列

 (4)排序

(5)去重(统计连续重复的行的次数,并且合并重复的行)

9.获取信息

(1)获取IP地址

Shell脚本攻略:文本三剑客之grep_第26张图片

 

 (2)获取邮箱

 (3)去空行

Shell脚本攻略:文本三剑客之grep_第27张图片

 Shell脚本攻略:文本三剑客之grep_第28张图片

(4) 匹配1或2

 (5)扩展正则表达式

取IP地址

取电话

取手机号(11位)

 其他方法不严谨

Shell脚本攻略:文本三剑客之grep_第29张图片

 取出邮箱

 转义

 

 

你可能感兴趣的:(linux,运维)