【发布时间】:2018-02-27 03:43:05
【问题描述】:
我可以在普通命令行中使用grep。
grep "ABC" Filename -C4
这给了我所需的输出,即匹配模式线上方和下方 4 行。
但如果我在 Unix shell 脚本中使用相同的命令,我将无法 grep 模式上方和下方的行。它给了我输出作为模式匹配的唯一行,最后一个错误不能说无法打开grep:-C4
如果我使用-A4 和-B4,结果是相似的
【问题讨论】:
-
用
uname -srv的输出更新你的Q。我打赌您使用的是旧版本的 SunOS(或许多其他版本),其中-[ABC]选项不可用。但是由于它适用于您的 cmd 行,您需要输入which grep然后在脚本中使用像/path/to/ABCgrep/grep这样的完整路径,或者覆盖像export PATH="/path/to/ABCgrep/grep:$PATH"这样的 PATH 设置。祝你好运。 -
将选项放在文件名之前:
grep -C4 "ABC" Filename。如果这也不起作用,那么您正在运行与 shell 脚本运行的grep不同的grep— 您需要为您使用的grep找到正确的路径并在脚本中使用它。-A、-B和-C选项是 GNU 扩展; o/s 命令可能不支持它们。您没有确定您正在使用的平台——如果是 Linux,那不会是问题,但如果是 Solaris、AIX 或 HP-UX,则可能是问题。由于您没有使用 Linux 标签,因此您使用的可能不是 Linux。