grep 中正则表达式出现奇怪错误

grep 中正则表达式出现奇怪错误

我正在运行以下命令:

cat something | egrep "(abc|def)$"

在运行 Linux 的服务器上。

使用内核为 2.6.18 的同一操作系统给出了正确答案,而使用内核为 2.6.19 的操作系统则得到了:

Illegal variable name. 

显然,$ 符号导致了错误,但问题是为什么它在不同的内核中表现不同?

答案1

1)您在两台机器上使用相同类型的 shell 吗?

2)您是否尝试过使用单引号,以便 shell 不会尝试将美元符号解释为变量?

答案2

这更可能是您正在运行的 shell 的问题。首先,引号;使用单引号时,变量不会在输出字符串中被替换。即,

% VAR="hello"
% echo "$VAR world!"
hello world!
% eco '$VAR world!'
$VAR world!

就您而言,它实际上是试图执行$,但$不是有效的变量名。如果您使用单引号,shell 将不允许替换美元符号。

相关内容