区块链技术博客
www.b2bchain.cn

正则表达式

这篇文章主要介绍了正则表达式的讲解,通过具体代码实例进行16904 讲解,并且分析了正则表达式的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=16904

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

文章目录

    • 简介
    • 使用
      • 基础用法
      • sed工具
    • 延伸正则表达式
    • 文件的格式化与相关处理
      • 格式化打印
      • awk:数据处理工具
      • 文件对比工具

简介

又名正规表示法
就是处理字符串的方法,是以行为单位来进行字符串的处理行为,它透过一些特殊符号的辅助,
        可以让使用者轻易的达到【搜寻、删除、替换】某特定字符串的处理程序!
是一种表示法,只要工具程序支持这种表示法,那么该工具程序就可以用来作为正则表达式的字符串
        处理之用。例如vi、grep、awk、sed等工具程序,
        因为他们支持正则表达式。但cp,ls等不支持,就只能使用bash自己本身的通配符。
按照不同的严谨度分为:
        基础正则表达式和延伸正则表达式。
与通配符的区别:

通配符:只是bash操作接口的一个功能 正则表达式:是一种处理字符串的表示方式 

使用

基础用法

grep -[i:忽略大小写][v:反向选择][n:行号][-A之后n行][-B之前n行] '搜寻字符串' filename 例如: 	grep -n 't[ae]st' wocao.txt					//匹配tast和test并显示行号 	grep -n '[^g]t[ae]st' wocao.txt				//匹配tast和test并其前边字符不能是g并显示行号 	grep -v '^$' wocao.txt | grep -v  '^#'		//不显示空白行和#开头的批注行,^代表开头,$代表结尾 	dmesg | grep -n --color=auto 'qxl'			//匹配到的关键词显色,并加上行号显示 	dmesg | grep -n -A3 -B2 --color=auto 'qxl'	//并将关键词所在行的前两行和后三行也一起捉出来显示 

区别:

.:(小数点)代表一定有一个任意字符	//bash通配符中无小数点 *:重复前一个字符0到无穷次			//bash通配符*: 代表 0 个或者多个任意字符 等 

汇总:
正则表达式

sed工具

直接上实例:

nl /etc/passwd | sed '2,5d'				//列出并打印行号同时删除2-5行 nl /etc/passwd |  sed '2a drink tea '	//在第二行后加上drink tea字符串当作第三行,加回车后可以加下一行 nl /etc/passwd |  sed '2i drink tea'	//在第二行前加上drink tea字符串当作第二行 nl /etc/passwd | sed '2,5c wocao'		//使用字符串替换掉2-5行 cat wocao.txt | grep 'wo' | sed 's/cao/CAO/g'				//搜寻并替换 cat /etc/passwd | sed -e '4d' -e '6c wocao' > passwd.new	//sed后接两个及以上动作时每个都要加上-e参数 

sed可以直接修改文件内容而不只是修改屏幕输出

sed -i 's/wo/WO/g' wocao.txt				//同时修改了文件内容 sed -i '&a # this is wocao.txt' wocao.txt	//$代表最后一行a代表增加 

延伸正则表达式

了解即可
正则表达式

文件的格式化与相关处理

格式化打印

print '格式' filename 

正则表达式实例:

printf '%10s %5i %8.2f' $(cat wocao.txt | grep -v Name) 

awk:数据处理工具

相较于sed用于整行的处理,awk比较倾向于一行当中分成数个字段来处理。
awk ‘条件类型1{动作1} 条件类型2{动作2} …’ filename

常用变量: NF	//每一行($0)拥有的字段总数 NR	//目前awk所处理的是第几行数据 FS	//目前的分割字符,默认实空格键 实例: last -n 5 | awk '{print $1 "t" $3}'							//取第一列字段于第三列字段并以tab隔开 last -n 5 | awk '{print $1 "t" lines:"NR" "t" columns:"NF"}'	//显示行数和字段总数 cat /etc/passwd | awk  '{FS=":"} $3<10 {print $1 "t" $3}'		//设置分隔符(第二行才开始生效)并将第三个字段小于10的第一第三字段显示出来并以tab隔开 cat /etc/passwd | awk 'BEGIN {FS=":"} $3<10 {print $1 "t" $3}'	//优化第一行也生效 

文件对比工具

//一般都拉到windows上用Compare对比,以下仅作为了解
diff:以行为单位对比

diff [-bBi] passwd passwd.new b:忽略仅有空白差异的差异 B:忽略空白行差异 i:忽略大小写 

cmp:以字节问单位对比,可以对比二进制文件

cmp -l file1 file2 -l:将所有不同的字节都列出来//不加默认只显示第一个发现的不同字节 

本文转自互联网,侵权联系删除正则表达式

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 正则表达式
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们