600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Linux中的shell正则表达式详解

Linux中的shell正则表达式详解

时间:2021-06-07 15:02:24

相关推荐

Linux中的shell正则表达式详解

Shell中使用正则表达式处理文本的命令有如下工具:

注:-E选项为扩展的正则表达式:支持+、?、|、()

.匹配除换行符(\n)之外的任意单个字符

echo -e "123\n456" | grep "1.3" # 显示 123

^匹配以xxx字符(串)开头所在的行

echo -e "abc\nxyz" | grep "^ab" # 显示 abc

$匹配以xxx字符(串)结尾所在的行

echo -e "abc\nxyz" | grep "z$" # 显示 xyz

*匹配前一个字符0个或多个

echo -e "x\nxo\nxoo\no\noo" |grep "xo*" # 显示 x/xo/xoo

+匹配前一个字符1个或多个

# grep -E 该选项为拓展的正则表达式,支持 + ? | 和 ()echo -e "abc\nabbc\nac" | grep -E "ab+c" # 显示 abc/abbc

?匹配前一个字符0个或1个

echo -e "abc/abbc/ac" | grep -E "ab?c" # 显示 abc/ac

[ ]匹配中括号中的任意一个字符

echo -e "abd\ncdf\nghj" | grep "[ac]" # 显示 abd/cdf

[.-.]匹配中括号中范围内的任意一个字符

echo -e "abc\nxyz" | grep "[a-z]" # 显示 abc/xyz

[^.]匹配非中括号中字符(串)之外的任意一个字符(串)

echo -e "a\nb\nc" | grep "[^a]" # 显示 b/c

^[^.]匹配以非中括号中字符(串)开头的行

echo -e "abc\nxyz" | grep "^[^a]" # 显示 xyz

{n,}或{n}匹配前面的字符至少 n次

echo -e "abc\nabcc\nabccc\nabcccc" | grep -E "c{2}" # 显示 abcc/abccc/abcccc

{n,m}匹配前面的字符至少 n次至多m次

# -w 只选择与整个单词相匹配的行# 注意m与前面的逗号之间没有空格echo -e "abc\nabcc\nabccc\nabcccc" | grep -E -w "abc{2,3}" # 显示 abcc/abccc

\<边界符,匹配行的开始

# 匹配以ab开始的行echo -e "abc\nabcc\ncab" | grep -E "\<ab" # 显示 abc/abcc

\>边界符,匹配行的结尾

# 匹配以ab结束的行echo -e "abc\nabcc\ncab" | grep -E "bc\>" # 显示 abc

|匹配竖杠两边两个字符中的任意一个

echo -e "a\nb\nc" | grep -E "b|c" # 显示 b/c

\转义符,将特殊符号转成字面意义上的字符

echo -e "1.2" | grep -E "1\.2" # 显示 1.2

Posix字符

参考:《Shell入门到精通》作者:李振良

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。