egrep 命令用法查找以一个字符开头且包含一些字符串的行

egrep 命令用法查找以一个字符开头且包含一些字符串的行

假设我有一个包含一些ls -l输出的文件:

waaa- foo.pdf
-bbb- foobar.pdf
-ccc- foobar
waaa- foobar

我只想得到第一行

waaa -foo.pdf

作为最终结果,我正在尝试:

egrep -E "^w" .file | egrep -E "*.pdf"

有什么方法可以将这两种搜索结合起来吗?

答案1

你必须这样写:

egrep "^w.*\.pdf$" filename
  • 表示以 开头,w后跟任意字符,以 结尾.pdf

对于逻辑“或”,您可以使用-eswitch:

egrep -e pattern1 -e pattern2

表示所有带有pattern1或 的行pattern2

或者按照@steeldriver 建议的那样,使用扩展正则表达式“或”:

egrep "(pattern1|pattern2)"

并且如您所知,对于扩展正则表达式,您必须使用egrep而不是grep,例如:

egrep '(bbb|ccc)' # works fine for your file
grep '(bbb|ccc)' # doens't have any result

对于“and”,您必须将其通过管道传输到另一个egrep

grep pattern1 | grep pattern2

表示所有同时包含pattern1和 的行pattern2

或者使用其他工具,如awk

awk '/pattern1/ && /pattern2/` filename

相关内容