我想使用egrep匹配内部模式,这些内部模式是更大的外部模式的子集。例如:
$ egrep 'b.*a' <<< baababaa
baababaa
我要打印:
baa
ba
baa
最佳答案
egrep
并不是真正适合该工作的工具,因为grep
受输出控制的限制。相反,sed
可以使用基本正则表达式准确提供您所需的内容。
例如:
$ echo "baababaa" | sed 's/\(.\)b/\1 b/g'
baa ba baa
说明
sed 's/find/replace/g'
-sed
的通用替换形式,其中应用了'g'
选项以使替换全局化,其中找
'.'
-匹配任何单个字符,并且\(.\)
-捕获\(...\)
之间的单个字符,后跟一个
'b'
,更换
\1
插入向后引用(\(...\)
之间捕获的字符),后跟
' '
(空格)和'b'
。仅查找所有内部
"ab"
并在它们之间放置空格的更有限的形式是:sed 's/ab/a b/g'
仔细检查一下,如果您有任何疑问,请告诉我。
关于linux - 如何多次匹配内部模式而不是相似的外部模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55133842/