shell匹配字符串,一行中出现多次(grep或sed)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell匹配字符串,一行中出现多次(grep或sed)相关的知识,希望对你有一定的参考价值。

例如:
abcadc
匹配a开头,c结尾的字符串:得到结果为abc 和adc,而不是abcadc

参考技术A

用 grep -oP 'a.*?c'   即可,如上图

追问

不知道为什么我那样写不对,很伤心

本回答被提问者和网友采纳

Shell 学习:正则表达式

正则符号包括基础正则符号扩展正则符号
基础正则符号可在 sedgrep 命令中直接使用
扩展正则符号需要使用扩展参数

相关扩展参数

sed -r — 使用扩展正则
egrep / grep -E — 使用扩展正则
fgrep / grep -F — 取消解析基础正则

基础正则符号

符号含义
^匹配以…开头字符
$匹配以…结尾字符
^$匹配空行
.匹配任意一个字符
*匹配前一个字符连续出现0次或多次
.*匹配任意字符,类似通配符*
\\不解析正则符号,将其转义成普通字符
[]匹配多个字符
[^a]匹配非a字符

部分测试:

扩展正则符号

符号含义
+匹配前一个字符连续出现一次或多次
|匹配多个字符串
()匹配括号内整体/用于后项引前项 — sed 命令使用
指定匹配前一个字符连续出现次数
?匹配前一个字符连续出现0次或者1次

部分测试:

补充:

n,m	至少连续n次,最多连续m次
n		匹配只连续n次的信息
n,	至少连续n次,最多不限
,m	至少连续0次,最多m次

正则表达式与通配符

  • 正则表达式:用来在文件中匹配符合条件的字符串,是包含匹配 — 支持命令:grep、awk、sed等
  • 通配符:用来匹配符合条件的文件名,是完全匹配 — 支持命令 ls、find、cp等
ps: grep 使用双引号会解析变量,使用单引号不会解析变量

以上是关于shell匹配字符串,一行中出现多次(grep或sed)的主要内容,如果未能解决你的问题,请参考以下文章

Shell 学习:正则表达式

Shell 学习:正则表达式

Shell 正则表达式

shell编程1

Linux Shell——正在表达式

shell编程