Linux 正则表达式详解

时间:2023-03-08 16:21:00
Linux 正则表达式详解

正则表达式(REGULAR):为处理大量的字符串而定义的一套规则和方法,为了处理大量字符串而生

常见命令参数

基础正则表达式

. :有且只有任意一个字符(包括空格)
* :重复前面任意0或者多个字符
.*:匹配任意字符==>所有,包括空格
\ :转义字符,让有意义的字符,显示原型 \$ --> $本身
^ :^d 以d开头的文件
$ :/$ 以/结尾的文体
^$:表示空行 grep -vn "^$" h.txt -->不显示空行 -n 显示行号
sed -r 's#(.*) fff#I am \1#g' h.txt 仅仅取每一行的()里面的东西
r==reqular
[abc] 匹配字符集内的任意一个字符 [0-9]匹配0-9 [a-z] a-z
[^abc] 不匹配字符集内的任意字符,相当于取反
a\{n,m} 重复前一个字母,n到m次
grep "0\{2\}" h.txt 重复0 2次
==> egrep "0{2}" h.txt
==> grep -E "0{2}" h.txt
\{n,\} 重复至少n次
\{,m\} 重复之多m次
注意:egrep ,sed -r过滤一般特殊字符可以不转义
\w : 只打印字母
grep "\w" h.txt --> a b c d e f g h i
\W : 打印非字母
\b :匹配单词的定界符
grep "\bhello\b" h.txt
\d : 表示数字

常用的命令展示

Linux grep/egrep命令详解

Linux sed命令详解

Linux awk命令详解

扩展正则表达

扩展正则表达式:多用于 egrep,grep -E
1. + 重复一个或者一个以上的字符
grep -Eo "go+d" h.txt --> god good
2. ?重复0个或者一个 比 . 的范围大
grep -Eo "g?d" h.txt --> gd, d
grep -Eo "go?d" h.txt --> gd god
3. | 查询多个符合的字符串
grep -Eo "hello|world" --> hello world
4. ()找出"用户组"字符串
egrep "g(la|oo)d" h.txt --> good glad

关于正则的一些小知识

1.Linux中适用于:grep,egrep,awk,sed,
2.区别通配符和正则 例如 ls *.log这里的 * 表示 所有的
3.Linux一般以行为单位
4.注意字符集 export LC_ALL=C
5.可以在 man grep/sed 过滤REGULAR 查看更多正则