如何对所有结果进行grep处理,以使子模式可以包含在目标模式中,也可以不包含在目标模式中?

维奈·萨(Vinay Sah)

假设我搜索了如下结果的字符串

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档