欢迎光临
我们一直在努力

Linux-正则表达式

Linux正则表达式

正则表达式(RegularExpression)在Linux系统中广泛应用于文本处理工具如grep,sed,awk等。Linux主要支持两种正则表达式风格:基本正则表达式(BRE)和扩展正则表达式(ERE)。

1.基本正则表达式

使用grep时用 -E,如grep -E "NATASHA|root" /etc/passwd 

1.1元字符

正则-元字符

元字符 解释 示例
. 匹配单个任意字符(除换行符) j..k(匹配j两个字符k)
^ 匹配行首 ^s(匹配以s开头)
$ 匹配行尾 $a(匹配以a结尾)
* 前导符出现0次或多次(任意次数) go*(匹配g,go,goo,gooo等)
+ 前导符出现1次或多次 go+(匹配go,goo,gooo等)
? 前导符出现0次或一次 go?(匹配g,go)
[] 字符集合;匹配方括号中任意一个字符 [ab]c(匹配ac或bc)
[ – ] 匹配指定范围内的一个字符 [0-3](匹配0,1,2,3中一个)
[ ^ ] 否定字符集合;匹配不在组内的字符 [^0-3](不匹配0,1,2,3中一个)
\\ 转义字符;无意义变有意义,有意义变无意义 \\.(将.无意义)
\\d 数字字符[0-9] \\w 等同于[a-zA-Z0-9] \\s 空格 \\b 单词边界
\\< 词首定位符

\\<jack\\>(就匹配jack)

\\<[Jj]ck\\>(匹配Jcak或jack)

\\> 词尾定位符
 \\(\\) 匹配后的标签

IP=10.8.11.32(替换32为33)

:%s/\\(10.\\)\\(8.\\)\\(11.\\)\\(32\\)/\\1\\2\\3\\33/

| "a|b"a或b
x{m} 字符x重复m次 o{5}o重复5次
x{m,} 字符x重复至少m次 o{5}o重复至少5次
x{m,n} 字符x重复m到n次 o{5,7}o重复5到7次
Linux工具中的正则表达式差异

工具/命令 默认正则类型 启用ERR的选项
grep BRE(基本元字符) -E
sed BRE(基本元字符) -r
awk ERE(拓展元字符) 默认
bash [[ =~ ]] ERE(拓展元字符) 默认

1.1.1元字符.

echo -e "cat\\ncuorp\\napple\\nmany\\nmum\\ngire" | grep -E "c.t"
-e:作用在于使\\n换行符起效果
-E:作用在于使正则起效果

1.1.2元字符^

echo -e "cat\\ncuorp\\napple\\nmany\\nmum\\ngire" | grep -E "^a"

1.1.3元字符$

echo -e "cat\\ncuorp\\napple\\nmany\\nmum\\ngire" | grep -E "e$"

1.1.4元字符*与+与?

echo -e "cat\\ncuorp\\napple\\nappppple\\nale\\nmany\\nmum\\ngire" | grep -E "ap*le"

echo -e "Aio\\ncat\\ncuorp\\nBin\\napple\\nZip\\nappppple\\nale\\nmany\\nmum\\ngire" | grep -E "ap+"

echo -e "Aio\\ncat\\ncuorp\\nBin\\napple\\nZip\\nappppple\\nale\\nmany\\nmum\\ngire" | grep -E "ap?le"

1.1.5元字符[]

echo -e "cat\\ncuorp\\napple\\nappppple\\nale\\nmany\\nmum\\ngire" | grep -E "[iou]"

1.1.6元字符[-]

echo -e "Aio\\ncat\\ncuorp\\nBin\\napple\\nZip\\nappppple\\nale\\nmany\\nmum\\ngire" | grep -E "[A-Z]"

1.1.7元字符[^]

echo -e "Aio\\ncat\\ncuorp\\nBin\\napple\\nZip\\nappppple\\nale\\nmany\\nmum\\ngire" | grep -E "[^a-p]"

1.1.8元字符\\

echo -e "example.com\\nhello world\\ntest.txt\\nabc123" | grep -E "\\.

1.1.9元字符\\<\\>

echo -e "Aio\\ncat\\ncuorp\\nBin\\napple\\nZip\\nappppple\\nale\\nmany\\nmum\\ngire" | grep -E "\\<apple\\>"

1.1.10元字符 \\(\\)

:%s/\\(192.\\)\\(168.\\)\\(189.\\)\\(133\\)/\\1\\2\\3134/

1.1.11元字符x{m}与x{m,}与x{m,n}

echo -e "Aio\\ncat\\ncuorp\\nBin\\napple\\nZip\\nappppple\\nale\\nmany\\nmum\\ngire" | grep -E "p{3}"

echo -e "Aio\\ncat\\ncuorp\\nBin\\napple\\nZip\\nappppple\\nale\\nmany\\nmum\\ngire" | grep -E "p{2,5}"

echo -e "Aio\\ncat\\ncuorp\\nBin\\napple\\nZip\\nappppple\\nale\\nmany\\nmum\\ngire" | grep -E "p{1,}"

赞(0)
未经允许不得转载:171主机测评 » Linux-正则表达式
分享到: 更多 (0)

评论 抢沙发

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