Linux入门 27_Linux中shell的文本处理工具

1、grep命令

grep命令是一个Linux文本处理工具,它与egrep命令属于同一系列grep -E与egrep作用相同,这些命令都是用于对文件和文本执行重复搜索任务的工具。我们可以通过grep命令指定特定搜索条件来搜索文件及其内容以获取有用的信息。grep是全局搜索正则表达式并打印出匹配的行,其抓取数据是贪婪模式,即不会漏掉过滤内容,但准确性会相对降低。

格式:

	grep 匹配条件 处理文件名称
	grep  root passwd 			##过滤root关键字所在的行
	grep -i root passwd 		##忽略大小写过滤root关键字所在的行
	grep -E "\<root" passwd 	##过滤root字符之前没有字符的行
	grep -E "root\>" passwd 	##过滤root字符之后没有字符的行
	grep -数字 					##显示过滤行以及上面几行和下面几行
	grep -n 					##显示匹配的行所在行号
	grep -A数字 					##显示过滤行以及下面几行
	grep -B数字 					##显示过滤行以及上面几行
	grep -v 					##反向过滤

grep命令字符数量匹配规则:

	^westos			以westos关键字开头
	westos$			以westos结尾
	w…s				w开头s结尾中间含有3个任意字符
	…s				s结尾前面有3个任意字符
	*				字符出现次数任意(即0次到任意次)
	?				字符出现0到1次
	+				字符出现1次到任意次
	{n}				字符出现n次
	{m,n}			字符出现m到n次
	{,n}			字符出现0到n次
	{m,}			字符最少出现m次
实验:

1、切换到一个空目录/mnt中,新建并编辑文件westos如下
在这里插入图片描述

2、使用grep命令分别过滤westos文件中,以w开头s结尾中间含有1 、2、3 任意个任意字符的关键字所在的行( * 表示任意字符 . 的个数任意)
在这里插入图片描述
3、使用grep -E命令过滤westos文件中,以w开头s结尾中间含有4个 / 含有3个 / 最少含有3个 / 含有1到3个任意字符的关键字所在的行
在这里插入图片描述

练习:

编写脚本显示系统中能被su命令切换的用户名称
在这里插入图片描述在这里插入图片描述

sed字符替换:

1、切换到一个空目录/mnt中,复制/etc/passwd文件到该目录中,避免文件内容过长删除一部分内容,文件中的内容是以:分隔的,我们可以使用vim编辑passwd文件进行字符替换,也可以使用sed进行字符替换,字符替换时要用 ‘ ’ 将替换策略引起来
在这里插入图片描述
2、使用sed命令将passwd文件中每一行每一列中的:替换为###
在这里插入图片描述3、=表示给文件中的每一行前加行号,但是默认加在每一行的前一行,如果想要将行号加在每一行前,我们需要通过管道将行号后的换行符\n替换为空(N表示提前加载sed处理行的下一行)
在这里插入图片描述

练习:

假设selinux为关闭状态,编写脚本Apache_port.sh修改http端口号,默认端口号80
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3、awk

1、awk简介

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

2、awk命令格式

awk -F 分隔符 BEGIN{}{}END{} FILENAME:这里FILENAME指的是文件名称本身
	表达式				#含义
	westos 				#westos变量值
	“westos” 			#westos字符串
	
	/条件1|条件2/ 		#条件1或者条件2 
	/条件1/||/条件2/ 	#条件1或者条件2 
	/条件1/&&/条件2/ 	#条件1且条件2 
	
	$0 					#所有的列
	$1 					#第一列
	$2					#第二列
	$3 					#第三列
实验:

1、使用awk命令,首先输出显示westos,接着-F指定以:为分隔符截取显示passwd文件的第一列,最后输出显示end

在这里插入图片描述
截取策略中的字符串需要用“ ”引起来,否则awk命令会将其当作变量处理(即不会输出显示指定字符串本身)

此时截取到的便是westos到end的内容
在这里插入图片描述2、使用awk命令统计passwd文件行数:给变量N赋初值为0,awk每读取一行文件内容变量N就进行一次自加操作,最后输出变量N的值即为passwd文件的行数
在这里插入图片描述
在这里插入图片描述

3、使用awk命令-F指定以:为分隔符截取显示passwd文件的第一列
在这里插入图片描述4、使用awk命令以:为分隔符截取第七列以bash结尾的行的第一列($7~表示指定第七列);使用awk命令以:为分隔符截取第七列不以bash结尾的行的第一列
在这里插入图片描述

练习:

1、命令练习:统计在系统中能su切换的且用户家目录不在/home下的用户数量

2、命令练习:使用awk命令抓取网卡ip

ifconfig ens3 | awk -F "[ ]+" '/inet /{print $3}'
&&
ifconfig ens3 | awk '/\<inet\>/{print $2}'

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿王不想秃头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值