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不支持正则表达式
-ffile 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件
-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行也显示出来

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

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

 

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

(5)匹配整个单词

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

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

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

 

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

过滤以b开头

过滤以/结尾

2.sort

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

(2)倒序排列

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

 

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

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

3.uniq

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

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

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

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

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

4.tr

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

(2)大写替换成小写

 

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

 (4)删除ab,打印c

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

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

 

5.cut

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

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

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

6.split

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

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

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

(1)获取所有tcp信息

 (2)取反不显示第一行

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

(4)排序

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

 

8.统计当前连接主机数

(1)获取tcp信息

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

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

 (4)排序

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

9.获取信息

(1)获取IP地址

 

 (2)获取邮箱

 (3)去空行

 

(4) 匹配1或2

 (5)扩展正则表达式

取IP地址

取电话

取手机号(11位)

 其他方法不严谨

 取出邮箱

 转义

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值