Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Bash中找到以字母开头的行?grep和awk都不起作用_Bash_Awk_Grep_Etl - Fatal编程技术网

如何在Bash中找到以字母开头的行?grep和awk都不起作用

如何在Bash中找到以字母开头的行?grep和awk都不起作用,bash,awk,grep,etl,Bash,Awk,Grep,Etl,我一直在努力寻找以E开头的行,在空格后面也有大写字母a grep 'E* A' file.txt | grep '^E' 代码的第一部分可以工作(打印所有在空格后有A的行,虽然我不太明白如何工作,因为没有“E”它就不能工作),但是第二部分不行。我知道用sql很容易做到这一点,但我相信用纯bash也有办法做到这一点。grep没有逻辑AND运算符,除非将管道用作: grep ' A' file.txt | grep '^E' 在这种情况下,您可以将BRE设置为 grep '^E.* A' fil

我一直在努力寻找以E开头的行,在空格后面也有大写字母a

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

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

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

grep ' A' file.txt | grep '^E'
在这种情况下,您可以将BRE设置为

grep '^E.* A' file.txt
或者您可能希望使用awk进行此类操作

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

根据你的问题,你可能也对

grep '^E.*\sA' file.txt

它匹配以E(^E)开头的行,然后是任何字符(.)零次或多次(*),然后是一个空格(\s),后面是a。

为什么不
grep'^ea'file.txt
?也许你没有意识到
E*
会找到不包含E的行(星号表示“前面的零行或多行”)。找到一行实际包含首字母E的代码,您的脚本应该可以运行,当然正如@WiktorStribiżew所指出的,使用单个正则表达式要好得多。这个问题也可以理解为匹配行,从
E
开始,然后在右侧某处使用空格+a',然后
'^E.*a'
应该可以运行。顺便说一句,你的
grep
版本是什么?请提供缺少的。看看这是否还不清楚。@WiktorStribiżew不起作用,顺便说一句,这是我的第一选择。3.1谢谢!我漏掉了点!谢谢工作得很好
\s
是一种PCRE扩展,传统上不受
grep