三剑客及正则表达式

三剑客及正则表达式

一、特殊符号

1.命令连接类的

|  	#管道。前面命令的标准输出作为后面命令的标准输入
;	#命令的结束符。同时运行多个命令
&&	#当前面命令执行成功则执行后面命令
||	#当前面命令执行失败则执行后面命令
mkdir michael1 &>/dev/null && echo '1' || echo '0'

2.命令结合符号

``	#优先执行反引号中的命令
$()	#和反引号功能一样
	# 打包压缩,包名为以当天日期命名
	tar zcvf `date +%F`.tar.gz

3.引号类的符号

 不加引号:  空格会被作为分隔符,将字符串分为两部分。多个字符串是一个整体需要加引号
单引号'':	所见即所得,不会解析特殊符号
双引号"":	优先解析特殊符号,引号套引号,需要双引号套单引号
\	#转义符号。让一个特殊的符号不具备特殊功能
*  	#通配符
{}	#数字或字符遍历
#	#注释

二、三剑客

grep:擅长实现文本字符串过滤 
sed:擅长进行文本行级处理。也具备文本过滤功能
awk:擅长进行文本的列级处理。具备sed和grep部分功能

1.grep的应用

作用:进行文本过滤

1.语法格式
grep 过滤的字符串 文本
# 查找当前系统中所有不可以登录系统的用户
grep '/sbin/nologin' /etc/passwd

2.核心参数 -v		#取反
	-i		#不区分大小写
	-o		#显示过滤的过程
	-A n	#after。显示过滤到的行及其之后n行的内容
	-B n	#before。显示过滤到的行及其之前n行的内容
	-C n	#显示过滤到的行及其前后n行的内容
	-n		#显示行号
	-w		#按照字符串匹配
	-r		#用于递归查找
	-l 		#过滤文本时只显示文件名。结合-r使用	

2.sed的应用

语法格式
sed '条件动作' 文本
1.sed的动作
	p	#输出。必须结合参数-n使用
	d	#删除
	a	#插入新的行
	c	#替换
2.sed的条件
#按照行号做处理
	## 请输出第5行内容
	sed -n '5p' 1.txt
	## 输出3-8行的内容
	sed -n '3,8p' 1.txt
   	## 输出4到最后一行的内容
	sed -n '4,$p' 1.txt
	## 间隔性输出:输出奇数行
	sed -n '1~2p' 1.txt
	
#多条件处理
sed -e '条件动作1' -e '条件动作2'
	## 输出3.txt中第一行和包含b的行
	sed -ne '1p' -e '/b/p'  3.txt
	
#文本过滤条件
sed -n '/过滤的字符串/动作'
	## 输出/etc/passwd中包含/sbin/nologin的行
	sed -n '/\/sbin\/nologin/p' /etc/passwd
	## 输出文件中包含aaa到bbb的行,循环输出
	sed -n '/aaa/,/bbb/p' 3.txt

#文本过滤结合行号使用
	##输出第三行到包含bbb的行
	sed -n '3,/bbb/p' 1.txt
	
#文本批量替换
sed -i 将修改重定向到原文件
sed 's#匹配的内容#替换成的内容#g'
	##
	sed -i 's#a#0#g' 3.txt 	

3.awk的应用

1.介绍

awk 解释型语言。支持独立编写脚本。用于实现数据分析处理结果

2.语法格式
awk '条件{print 内容}' 文件
3.实操应用
# 获取当前系统中所有用户的用户名
awk -F ':' '{print $1}' /etc/passwd

# 获取当前系统中所有用户的用户名和UID
awk -F ':' '{print "用户名:"$1,"UID:"$3}' /etc/passwd

# 获取当前系统中所有用户的用户名和命令解释器
awk -F ':' '{print $1,$NF}' /etc/passwd

# 获取当前系统中所有用户的用户名和家目录
awk -F ':' '{print $1,$(NF-2)}' /etc/passwd

4.awk的条件

# 查找当前系统中可用空间小于100w的文件系统
df|awk '$4<1000000{print $1,$4}'

# 按行输出结果
	##输出前10行
	seq 20 |awk 'NR<=10{print}'
	##输出第20行
	seq 20 |awk 'NR==20{print}'
	
# 文本过滤
	##获取当前系统中不能登录用户的用户名和UID和命令解释器
	awk -F ':' '/\/sbin\/nologin/{print $1,$3,$NF}' /etc/passwd
	##获取当前系统中uid大于1000的不能登录用户的用户名和UID和命令解释器
	awk -F ':' '$3>=1000&&/\/sbin\/nologin/{print $1,$3,$NF}' /etc/passwd
	##获取当前系统中uid大于1000或者小于500的用户的用户名和UID和命令解释器
	awk -F ':' '$3>=1000||$3<=500{print $1,$3,$NF}' /etc/passwd

二、正则表达式

  1. 作用:通过配合三剑客更加精准获取所需的文本内容

  2. 可用范围:仅限于三剑客命令能够识别

正则表达式和普通命令行下的符号长得一样但是功能完全不同

3.普通正则

.   	#匹配任意单个字符
*   	#前面的字符连续出现0次或多次
.*  	#所有
^		#匹配以某字符开头的行
$   	#匹配以某字符结尾的行
^$  	#空行
[]  	#在中括号中的字符,分别作为独立字符去匹配
[0-9] 	#匹配所有数字
[a-z] 	#匹配所有小写字母
[a-Z]	#匹配所有大小写字母
[^] 	#取反

4.扩展正则

grep -E 支持扩展正则
sed -r	支持扩展正则
awk		默认支持

+		#前面的字符连续出现1次或多次
?		#前面的字符连续出现0次或1次
{n} 	#前面的字符连续出现n次  
{m,n} 	#前面的字符连续出现最少m次,最多n次
|   	#或者关系
()  	#作为整体
grep -vE '^#|^$' 文件	#去除文件所有注释和空格
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值