正则表达式,又称规则表达式,(英语:Regular Expression)在代码中常简写为 regex、regexp 或 RE ,计算机科学的一个概念。
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本
正则表达式不只有一种,而且 Linux 中不同的程序可能会使用不同的正则表达式,如:
工具:grep sed awk egrep
正则表达式——通常用于判断语句中,用来检查某一字符串是否满足某一格式
正则表达式是由普通字符与元字符组成
普通字符:包括大小写字母、数字、标点符号及一些其他符号
元字符:是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式
LINUX 中常用的有两种正则表达式引擎
基础正则表达式:BRE
扩展正则表达式:ERE
选项 含义
示例:
例1:统计root字符总行数
例2:不区分大小写查找the所有的行
例3:过滤出IP
常见元字符:(支持的工具:grep、egrep、sed、awk)
示例:
例:查看 test.txt 文件中以 t 开头的行
例:查看 test.txt 文件中以 s 结尾的行
例:查看 test.txt 文件中 ,W后面有两个O的单词
例:查看 test.txt 文件中 ,W后面有两个或多个O的单词
例:“*”符号匹配任意字母数字
匹配字符时,匹配的是上一个字符的次数
通常情况下会使用基础正则表达式就已经足够了,但有时为了简化整个指令,需要使用 范围更广的扩展正则表达式
与基础正则表达式类型相同,扩展正则表达式也包含多个元字符,常见的扩展正则表达 式的元字符主要包括以下几个:
示例:
+:
?:
| :
():
()+:
1.查找特定字符
若反向选择,如查找不包含“the”字符的行,则需要通过 grep 命令的“-v”选项实现,并配合“-n”一起使用显示行号
2.利用中括号“[]”来查找集合字符
在上述命令的执行结果中发现“woood”与“wooooood”也符合匹配规则,二者均包含“w”。其实通过执行结果就可以看出,符合匹配标准的字符加粗显示,而上述结果中可以得知, “#woood #”中加粗显示的是“ooo”,而“oo”前面的“o”是符合匹配规则的。同理“#woooooood #”也符合匹配规则。
3.查找行首“^”与行尾字符“$”
查询以小写字母开头的行可以通过“ ^ [a-z]”规则来过滤,查询大写字母开头的行则使用
“ ^ [A-Z]”规则,若查询不以字母开头的行则使用“^ [ ^a-zA-Z] ” 规则
“^”符号在元字符集合“[]”符号内外的作用是不一样的,在“[]”符号内表示反向选择,在“[]” 符号外则代表定位行首。反之,若想查找以某一特定字符结尾的行则可以使用“$”定位符。例如,执行以下命令即可实现查询以小数点(.)结尾的行。因为小数点(.)在正则表达式中也是一个元字符(后面会讲到),所以在这里需要用转义字符“”将具有特殊意义的字符转化成普通字符
当查询空白行时,执行“grep -n‘^$’test.txt”命令即可
4.查找任意一个字符 “ . ” 与重复字符 “ * ”
5.查找连续字符范围“{}”
使用了“.”与“*”来设定零个到无限多个重复的字符,如果想要限制一个范围内的重复的字符串该如何实现呢?例如,查找三到五个 o 的连续字符,这个时候就需要使用基础正则表达式中的限定范围的字符“{}”。因为“{}”在 Shell 中具有特殊意义,所以在使用“{}”字符时,需要利用转义字符“”,将“{}”字符转换成普通字符。“{}”字符的使用方法如下所示
使用说明:
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
常用选项
示例:
例1:截取passwd文件的第一列
例2:截取passwd文件的第一列和第三列
例3:截取passwd文件的第一列到第三列
例4:截取who查询结果的第三个字节
例5:截取name文件中的第一个文字
是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序。例如数据和字符的排序就不一样
常用选项
示例:
主要用于去除连续的重复行
注意:是连续的行,所以通常和sort结合使用先排序使之变成连续的行再执行去重操作,否则不连续的重复行他不能去重
常用选项
例1:统计重复行的次数,不连续的重复行他不算做重复行
例2:结合sort使用就是我们想要的效果
例3:结合sort使用,过滤出重复行
例4:结合sort使用,去重
例5:也可以直接用sort -u
可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符
常用选项
例1:将fruit文件中的小写a-z字母替换成大写的A-Z
例2:替换(是一 一对应的字母的替换)
例3:把替换的字符用单引号引起来,包括特殊字符
例4:多个字符替换成一个
例5:删除换行符
例6:对p字符去重,只保留第一个
例7:遇到多个回车只保留一个回车,相当于去除空行