【发布时间】:2010-07-06 13:35:27
【问题描述】:
我在 Linux 机器 A 上工作,我运行这个:
grep '^\S*\s-' access_log
这显示了一些行,正如预期的那样。
然后我移动到机器 B 并启动完全相同的命令。但这一次没有成功。
为了完成我需要的事情,我必须启动它:
grep '^[^ ]* -' access_log
在成功之前,我尝试了所有这些但没有运气:
grep '^\S* -' access_log
grep '^\S*\s-' access_log
grep -e '^\S* -' access_log
grep -E '^\S* ' access_log
看起来机器 B 不理解元字符 \S 和 \s。
两个盒子都在运行:grep 2.5.1 和 bash 3.2.25
这怎么可能?
干杯, 丹
【问题讨论】:
-
stackoverflow.com/questions/18514135/… 是关于 Bash 的内置正则表达式,但基本上也适用于像
grep这样的传统正则表达式工具。