grep不会从文件中提取模式

Dan*_*ele 3 linux grep

我有一个模式文件,例如t.txt,其中包含以下内容:

vali
Run Code Online (Sandbox Code Playgroud)

我想运行的grep对文件,说一个,包含以下内容:

validate
validate:

bw_validate:
 [echo] Validating project: CrossService_v1_59_5_1
 [echo] Found 62 errors and 28 warnings
 [echo] -----------------------------------------------------------------
 [echo] Validating project: CRM-UDB_59_4_2
 [echo] Found 25 errors and 28 warnings
 [echo] -----------------------------------------------------------------
 [echo] Validation Failed: At least one project contains errors.

notify:

BUILD FAILED
bw.xml:311: Validation Failed: At least one project contains errors.
Run Code Online (Sandbox Code Playgroud)

如果我执行:

grep -iE vali a
Run Code Online (Sandbox Code Playgroud)

我得到了预期的输出,即:

validate
validate:
bw_validate:
 [echo] Validating project: CrossService_v1_59_5_1
 [echo] Validating project: CRM-UDB_59_4_2
 [echo] Validation Failed: At least one project contains errors.
bw.xml:311: Validation Failed: At least one project contains errors.
Run Code Online (Sandbox Code Playgroud)

但是如果我执行:

grep -iE -f t.txt a
Run Code Online (Sandbox Code Playgroud)

我没有任何比赛。文件是可读的,并且都位于同一目录(我从中执行命令)。我同时尝试了-f和--file = t.txt,-file ='t.txt',-file =“ t.txt”

我在Linux Fedora 16 64位上。奇怪的是,同一命令在带有grep / egrep端口的Windows中也能正常工作。

我想念什么吗?感谢您的帮助,因为这让我头疼:(谢谢!

cni*_*tar 5

它应该工作正确(它对我有用)。该-f开关由POSIX指定。

您说它可以在Windows上运行的事实给了我一个主意:可能是t.txt文件以DOS换行符结尾吗?我用一个干净的文件(没有换行符)尝试了一下,它起作用了。然后,我使用DOS文件进行了尝试,并且能够重现您的结果。

尝试dos2unix“修复” DOS文件。