我正在完成我的任务,我一直坚持这个问题,我已经尝试在线寻找解决方案和我的教科书。
问题是:
列出
b
文件中包含字符e
后面没有字符grep -i 'b'
的字词的所有行。
我知道您可以b
找到包含字母b
的行,但是我怎样才能使它只显示包含e
的行但是后面没有字符{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "InvokePermission",
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": "*"
}
]
}
?
答案 0 :(得分:2)
这将找到一个“b”,后面没有“e”:
$ echo "one be
two
bring
brought" | egrep 'b[^e]'
或者如果perl可用但egrep不是:
$ echo "one be
two
bring
brought" | perl -ne 'print if /b[^e]/;'
如果你想找到“b”后面没有“e”但没有包含“be”的单词的行(使用 \ w perl元字符来在b)之后捕获另一个字符,并避免任何以b结尾的单词:
$ echo "lab
bribe
two
bring
brought" | perl -ne 'print if /b\w/ && ! /be/'
所以最后的电话会:
$ perl -ne 'print if /b\w/ && ! /be/' f3.txt
答案 1 :(得分:1)
排除" edge"可能存在并破坏练习的单词,例如lab
,bribe
和bob
:
$ a="one
two
lab
bake
bob
aberon
bee
bell
bribe
bright
eee"
$ echo "$a" |grep -v 'be' |grep 'b.'
bake
bob
bright
答案 2 :(得分:-1)
您可以选择以下两种解决方案:
grep -ie 'b[^e]' input_file.txt
或
grep -ie 'b.' input_file.txt | grep -vi 'be'
第一个确实使用正则表达式:
'b[^e]'
表示b followed by any symbol that is not e
-i
将忽略大小写,系统会接受包含B
或b
且未被e
或E
直接跟随的选项行< / LI>
第二个解决方案调用grep两次:
-v
由第二个grep过滤生成的行,以拒绝包含be
-i
如果b
必须绝对后跟另一个字符,请使用b.
(正则表示b
后跟任何其他字符)否则如果您我还希望接受b
未跟随任何其他字符的行,您可以在第一个grep调用中使用b
而不是b.
。
grep -ie 'b' input_file.txt | grep -vi 'be'
<强>输入强>
BEBE
bebe
toto
abc
bobo
<强>结果:强>
abc
bobo