• Linux学习——shell编程之正则表达式和字符处理命令


    shell编程之正则表达式

    一 正则表达式
    1 什么是正则表达式

    	正则表达式用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分隔、匹配、查找及替换操作。
    

    2 shell编程之正则表达式与通配符

    正则表达式:用于在文件中匹配符合条件的字符串。正则是包含匹配。grep 、awk 、sed等命令支持正则表达式。

    通配符:用于匹配符合条件的文件名,通配符是完全匹配。ls、find、cp 这些命令不支持正则表达式,只能使用shell自己的通配符来进行匹配。

    通配符:
    	- *  匹配任意内容(0个或者多个)
    	- ? 匹配任意一个内容
    	- [] 匹配中括号的一个字符
    

    3 shell编程之基础正则表达式

    正则表达式:基础正则和扩展正则

    元字符: 
    *  #重复匹配前一个字符0到多次
    	a* #这种写法无意义
    	aa* #查找包含a的字符串
    	
    .  #匹配除了换行符外任意一个字符,类似通配符?
    	.*  #匹配全部内容
    
    ^  #匹配行首
    $  #匹配行尾
    	^$ #会匹配空白行
    	
    []  #匹配中括号中的指定任意一个字符,只匹配一个字符
    	[0-9] 
    	[a-z] 
    	^[0-9] #数字开头
    	
    [^] #匹配除了中括号的字符以外的任意一个字符,(取反)
    	^[^a-z] #匹配不用小写字母开头的行
    	^[^a-zA-Z] #匹配不用字母开头的行
    
      #转义符,让特殊的字符丧失意义
    	.$ #匹配使用"."结尾的行
    
    {n} #表示其前面的字符恰好出现n次
    	a{3} #匹配a字母连续出现三次的字符串
    	[0-9]{3}  #匹配包含连续的三个数字的字符串
    	
    {n,}  #表示其前面字符出现不少于n次。	
    {n,m} #表示其前面的字符至少出现n次,最多出现m次
    

    这里写图片描述
    6 shell编程之正则表达式案例

    匹配日期格式YYYY-MM-DD
    		[0-9]{4}-[0-9]{2}-[0-9]{2}
    匹配Ip
    		[0-9]{1,3}.[0-9]{1.3}.[0-9]{1.3}.[0-9]{1.3}
    	
    

    备注:
    grep行提取命令
    grep -v ,取反

    二 字符截取命令
    1 shell字符截取命令之cut命令
    列提取命令

    cut [选项] 文件名

    选项:
    	-f 列号:提取第几列,(默认分隔符是制表符)
    	-d 分隔符:按照指定分隔符分隔列
    
    例子:截取当前系统登录的用户名
    grep "/bin/bash" /ect/passwd | grep -v "root" | cut -f 1 -d ":"	
    
    cut的局限性:
    只能分隔规格的字符串
    只能截取有规格的字符串
    

    备注:df 查看系统当前的分区状态 df -h

    2 shell字符截取命令之printf

    标准输出命令,格式化输出!

    printf '输出类型 输出格式' 输出内容

    输出类型:
    		%ns : 输出字符串。n是数字指定输出几个字符
    		%ni : 输出整数。n是数字指定输出几个数字
    		%m.nf : 输出浮点数。m和n是数字。
    		
    		例如:%8.2 代表共输出8位,其中2位小数,6为整数。
    
    输出格式:
    		a : 输出警告声音
    		 : 输出退格键
    		f : 清除屏幕
    		
     :换行
    		
     :回车
    			 :水平输出退格键,,也就是tab键
    		v :垂直输出退格键,也就是tab键
    		
    例子:
    		printf '%s' $(cat test.txt) #不调整输出格式
    

    3 shell字符截取命令之awk命令

    列提取命令

    awk '条件1{动作2} 条件2{动作2}...' 文件名

    条件:
    		一般使用关系表达式作为条件
    			x > 10 判断变量x是否大于10
    			x >= 10 大于等于
    动作:
    		格式化输出
    		流程控制语句
    
    例子:
    	awk '{printf $2 "	" $4 "
    "}' text.txt
    	df -h | awk '{print $1 "	" $3}'
    	
    awk中print和printf
    		printf,标准输出,需加换行符
    		print,不需要加换行符,默认最后换行
    

    4 shell字符字符替换命令之sed命令

    字符替换, sed主要用来对数据进行选取、替换、删除、新增的命令。

    sed [选项] '[动作]' 文件名

    选项:
    		-n : sed 处理的行输出
    		-e :允许对输入数据应用多条sed命令编辑
    		-i : 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
    		
    动作:
    		 a : 追加
    		 c : 行替换
    		 i : 插入,插入一行或者多行
    		 d : 删除,删除指定的行
    		 p :打印,输出指定的行
    		 s :字串替换
    

    三 字符处理命令

    排序命令

    sort [选项] 文件名

    选项:
    		-f :忽略大小写
    		-n :以数值型进行排序
    		-f :反向排序
    		-t :指定分隔符
    

    统计命令
    wc [选项] 文件名

    选项:
    		-l 只统计行数
    		-w 只统计单词数
    		-m 只统计字符数
    
    

    欢迎访问我的csdn博客,我们一同成长!

    "不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!"

    博客首页http://blog.csdn.net/u010648555

  • 相关阅读:
    Java并发之AQS详解
    Linux查看日志常用命令
    换了电脑如何使用hexo继续写博客
    职业保持年轻感
    如何用区块链技术解决信任问题?Fabric 架构深度解读
    一致性哈希(hash)算法
    你真的了解volatile关键字吗?
    Spring的IOC原理
    使用Hexo+Github搭建属于自己的博客(进阶)
    使用Hexo+Github搭建属于自己的博客(基础)
  • 原文地址:https://www.cnblogs.com/aflyun/p/7190913.html
Copyright © 2020-2023  润新知