Erro estranho com expressão regular no grep

1

Estou executando o seguinte comando:

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

Em um servidor executando o Linux.

O mesmo SO com o kernel 2.6.18 dá a resposta correta, enquanto que com o 2.6.19 eu recebo:

Illegal variable name. 

Aparentemente, o sinal $ está causando o erro, mas a questão é por que ele está se comportando de maneira diferente nos kernels?

    
por Yon 29.04.2012 / 17:05

2 respostas

3

1) Você está usando o mesmo tipo de casca em ambas as máquinas?

2) Você já tentou usar aspas simples, para que o shell não tente interpretar o cifrão como uma variável?

    
por 29.04.2012 / 17:38
1

É mais provável que isso seja um problema com o shell que você está executando. Primeiro, as citações; ao usar aspas simples, as variáveis não serão substituídas na string de saída. Ou seja,

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

No seu caso, está literalmente tentando executar $ , mas $ não é um nome de variável válido. Se você usar aspas simples, o shell não permitirá que o cifrão seja substituído.

    
por 29.04.2012 / 17:40

Tags