使用带有-e的相同grep命令的不同输出

时间:2018-07-10 14:00:32

标签: bash grep

我有一个grep命令:

grep -w -i -e "str1" -e "str2" -e "str3 ... -e "str30" file.txt

问题是我根据字符串在命令中的位置得到不同的结果,例如,如果str30在位置2,则匹配,如果str30在最后位置,则不匹配。除此之外,该命令是100%相同的文件,grepping相同的文件。

在grep上是否有一些时髦的东西会丢失某些字符串(如果它们不早出现的话),还是会遍历每一行并检查每个字符串?还是每grep可以有-e的一定限制?

我正在使用OSX 10.13.4

用例:

在情况1中,要搜索的字符串位于最后一个位置。在情况2中,它处于第二位置。注意:在实际情况下,每个grep都有大约30个不同的字符串要匹配,为简洁起见,此处已将它们缩短(**表示易于阅读的字符串,而不是匹配的字符串)

grep -w -i -e "canDisplayBannerAds" -e "shouldPresentInterstitialAd" -e "rotatingHeaderView" -e "shouldAutorotateToInterfaceOrientation" -e "bottomLayoutGuide" -e "modalViewController" -e "shouldAutomaticallyForwardRotationMethods" -e "**supportedInterfaceOrientationsForWindow**" encoder_classes.txt

一无所获

grep -w -i -e "canDisplayBannerAds" -e "**supportedInterfaceOrientationsForWindow**" -e "rotatingHeaderView" -e "shouldAutorotateToInterfaceOrientation" -e "bottomLayoutGuide" -e "modalViewController" -e "dismissModalViewControllerAnimated" encoder_classes.txt

- (UIApplication *)arg1 supportedInterfaceOrientationsForWindow:(UIWindow *)arg2;
- (UIApplication *)arg1 supportedInterfaceOrientationsForWindow:(UIWindow *)arg2;
- (UIApplication *)arg1 supportedInterfaceOrientationsForWindow:(UIWindow *)arg2;

编辑: test.txt包含a...z aa...zz ccc

案例1的末尾有'ccc',但找不到

情况2在位置3处有'ccc'并且被发现

grep -w -i -e "a" -e "b" -e "c" -e "d" -e "f" -e "g" -e "c" -e "c" -e "c" -e "c" -e "c" -e "c" -e "ccc" test.txt 

a
b
c
d
f
g

grep -w -i -e "a" -e "b" -e "ccc" -e "c" -e "d" -e "f" -e "g" -e "c" -e "c" -e "c" -e "c" -e "c" -e "c" test.txt

a
b
c
d
f
g
ccc

EDIT2:

似乎找不到“ ccc”,除非它位于位置1,2或3,在位置3之后,不再在文件中找到。

位置5的“ ccc”,未找到

grep -w -i -e "a" -e "b" -e "c" -e "d" -e "ccc" test.txt 
a
b
c
d

'ccc'在第4位,未找到

grep -w -i -e "a" -e "b" -e "c" -e "ccc" test.txt 
a
b
c

位于第3位的“ ccc”

grep -w -i -e "a" -e "b" -e "ccc" test.txt 
a
b
ccc

0 个答案:

没有答案