首页 > 解决方案 > 如何在 Bash 中找到以字母开头的行?grep 和 awk 都不起作用

问题描述

我一直在试图找到以 E 开头的行,在这个空格之后也有一个大写字母 A

grep 'E* A' file.txt | grep '^E'

代码的第一部分将起作用(打印所有在空格后带有 A 的行,虽然我不太明白如何,因为没有'E' 它不起作用),但第二部分不是。我知道用 sql 很容易做到这一点,但我相信用纯 bash 也可以做到这一点。

标签: bashawkgrepetl

解决方案


grep没有逻辑 AND 运算符,除非将管道用作:

grep ' A' file.txt | grep '^E'

在这种特殊情况下,您可以将 BRE 设置为

grep '^E.* A' file.txt

或者您可能想使用 awk 进行此类操作

awk '/^E/ && / A/' file.txt

推荐阅读