假设我有一个有一些ls -l输出的文件:
waaa- foo.pdf
-bbb- foobar.pdf
-ccc- foobar
waaa- foobar
Run Code Online (Sandbox Code Playgroud)
我只想得到第一行
waaa -foo.pdf
Run Code Online (Sandbox Code Playgroud)
作为最终结果,我正在尝试:
egrep -E "^w" .file | egrep -E "*.pdf"
Run Code Online (Sandbox Code Playgroud)
有没有办法将这两个搜索结合起来?
你必须这样写:
egrep "^w.*\.pdf$" filename
Run Code Online (Sandbox Code Playgroud)
w以任何字符开头并以.pdf.对于逻辑“或”,您可以使用-e开关:
egrep -e pattern1 -e pattern2
Run Code Online (Sandbox Code Playgroud)
表示所有带有pattern1或 的行pattern2。
或者按照@steeldriver 的建议,使用扩展的正则表达式“或”:
egrep "(pattern1|pattern2)"
Run Code Online (Sandbox Code Playgroud)
正如您所知,对于扩展正则表达式,您必须使用egrep而不是grep,例如:
egrep '(bbb|ccc)' # works fine for your file
grep '(bbb|ccc)' # doens't have any result
Run Code Online (Sandbox Code Playgroud)
对于“和”,您必须将其通过管道传输到另一个egrep:
grep pattern1 | grep pattern2
Run Code Online (Sandbox Code Playgroud)
表示所有带有pattern1和 的行pattern2。
或使用其他工具,如awk:
awk '/pattern1/ && /pattern2/` filename
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3104 次 |
| 最近记录: |