我有一个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