shell编程--正则表达式
程序员文章站
2022-07-10 10:41:04
...
1.BRE模式
1.1 特殊字符
.*[]^${}\+?|()
一定要使用需要转义
-
. :匹配除换行符外的任意单个字符
-
[]:匹配某个特定字符(必须匹配到)
sed -n '/[ch]at/p' data6
-
^:锁定到行首
echo "The book store" | sed -n '/^book/p'
-
$:锁定到行尾
sed '/^$/d' data5 #过滤掉空白行
-
[^]:排除型字符组
-
[-]:区间
sed -n '/[c-h]at/p' file.txt echo "19a" | sed -n '/^[0-9][0-9]$/p'
-
特殊字符组
组 描述 [[:alpha:]] 匹配任意字母字符,不管是大写还是小写 [[:alnum:]] 匹配任意字母数字字符09、AZ或a~z [[:blank:]] 匹配空格或制表符 [[:digit:]] 匹配0~9之间的数字 [[:lower:]] 匹配小写字母字符a~z [[:print:]] 匹配任意可打印字符 [[:punct:]] 匹配标点符号 [[:space:]] 匹配任意空白字符:空格、制表符、NL、FF、VT和CR [[:upper:]] 匹配任意大写字母字符A~Z - 例如:
echo "abc" | sed -n '/[[:alpha:]]/p'
- 例如:
-
*:表示该符号前面的字符出现0次或多次
下面的是扩展的,sed不支持,gawk可以
- ?:表前面的
字符
出现0或1次 - +:表前面的
字符
至少出现1次 - {m}:表前面的
表达式
准确的出现m次 - {m,n}:至少出现m次,至多出现n次
echo "bet" | gawk --re-interval '/be{1}t/{print $0}' echo "bt" | gawk --re-interval '/be{1,2}t/{print $0}'
- |:管道符号,用逻辑OR方式指定正则表达式引擎要用的两个或多个模式。如果任何一个模式匹配了数据流文本,文本就通过测试。
echo "The cat is asleep" | gawk '/cat|dog/{print $0}'
- ():表达式分组
echo "Sat" | gawk '/Sat(urday)?/{print $0}'