假设我搜索了如下结果的字符串
anything1.knownKeyWord
anything2.knownKeyWord
anything3[1].knownKeyWord
我如何为grep编写通用语法,使其匹配所有3个字符串。我已经做到了
^.*\w+\d[\[]?[0]?[\]]?\.knownKeyWord.*$
但是我认为,例如对于索引编制[1]
不是很好的方式,我该如何实现,以便即使我替换[1]
为[2342jdsjf]
,也不必过多地更改语法。
使用扩展的正则表达式:
$ grep -E '[[:alnum:]_]+[[:digit:]]+(\[[^]]+\])?\.knownKeyWord' <file
anything1.knownKeyWord
anything2.knownKeyWord
anything3[1].knownKeyWord
这将提取格式中包含字符串的任何行
XXXNNN[YYY].knownKeyWord
或者
XXXNNN.knownKeyWord
whereXXX
是任何非空的字母数字字符串(也可能包括_
),NNN
是(一个或多个)数字的任何字符串,并且YYY
是不包含的任何东西]
。
如果要匹配的完整行,请grep
与with一起使用。使用是否匹配应该是完整的话(即不为别的子串)。-x
-w
仅sed
用于显示正则表达式的每个部分都匹配什么:
$ sed -E 's/([[:alnum:]_]+)([[:digit:]]+)(\[[^]]+\])?(\.knownKeyWord)/<\1><\2><\3><\4>/' <file
<anything><1><><.knownKeyWord>
<anything><2><><.knownKeyWord>
<anything><3><[1]><.knownKeyWord>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句