Bash-grep复杂搜索

Bash-grep复杂搜索,bash,grep,Bash,Grep,如何使用grep编写搜索命令,以查找具有严格要求的行。例如,它应该以一个仅由字母和“-”组成的名称开头,然后是“:”,然后是一年或“xxxx”,然后是“:”,然后是一行字母、数字和一段长度的“-”。或者可能有一个链接,我可以阅读这个。。。很长一段时间以来,我一直试图在互联网上找到一些解决方案,但无法…。您需要在这里传递grep命令一个正则表达式,它描述您感兴趣的模式,在此基础上grep将只匹配有效的行 考虑到您的指示,以下正则表达式可以执行此操作: ^([A-z]|-)+:([0-9]|xxxx

如何使用grep编写搜索命令,以查找具有严格要求的行。例如,它应该以一个仅由字母和“-”组成的名称开头,然后是“:”,然后是一年或“xxxx”,然后是“:”,然后是一行字母、数字和一段长度的“-”。或者可能有一个链接,我可以阅读这个。。。很长一段时间以来,我一直试图在互联网上找到一些解决方案,但无法…。

您需要在这里传递grep命令一个正则表达式,它描述您感兴趣的模式,在此基础上grep将只匹配有效的行

考虑到您的指示,以下正则表达式可以执行此操作:

^([A-z]|-)+:([0-9]|xxxx)+:([A-z]|[0-9]|-)+$
表达式以
^
$
锚定开始和结束,它们指示行的开始和结束。然后,您基本上有三个标记块,由
分隔,第一个匹配的字母和破折号,第二个年份或
xxxx
,第三个字母、数字和破折号
+
是一个量词,表示前面的标记可以出现一次或多次

您可以将其与grep一起使用,如下所示:

grep -P "^([A-z]|-)+:([0-9]|xxxx)+:([A-z]|[0-9]|-)+$"

-p选项用于指示将其解释为Perl正则表达式并正确处理连字符匹配。

能否共享示例输入和示例输出?我想我必须编写整个表达式,因为它仍然不起作用。。。我使用的行看起来像这样:@Article{Courtois:1971:readers,所以我需要过滤错误的行(正确的正如我以前写的那样),所以我尝试这样做:grep--color-E-n'^ literatur.bib|grep-E-P-v'([A-z]|-)+:([1-9][0-9][0-9][0-9]| xxxx 0:([A-z][0-9]|-)+'怎么了?在第二个grep中,您应该添加开始和结束线锚(^和$)。然后,如果表达式的第一个标记出现在每一行中,则添加“@Article{”作为表达式的第一个标记。