É possível que algum tipo de problema no conjunto de caracteres esteja jogando coisas para você. Aqui estão alguns comandos que você deve usar para recriar um uso bem-sucedido de grep
que possa ajudá-lo.
Primeiro, vamos criar um arquivo de texto no terminal para evitar problemas no conjunto de caracteres:
echo -e "Hello\nHallo" > foo.txt
O sinal -e
informa echo
que queremos que o \n
seja interpretado como uma nova linha e não a sequência literal. Isso nos dá duas linhas. Você deve poder cat
o arquivo e vê-lo sem nenhum problema, como este:
cat foo.txt
Hello
Hallo
Agora você pode usar o comando grep
que você postou antes (ele realmente não precisa de aspas, mas você deve usá-las, pois há caracteres especiais no bash. Além disso, as aspas não são aspas duplas)
grep -i 'h[ae]llo' foo.txt
Isso produz o resultado esperado. Se isso funcionou para você, mas você está curioso para saber o que está acontecendo com o seu outro arquivo de texto, você pode fazer algumas coisas para descobrir o que está acontecendo.
Primeiro, tente executar o comando file
no arquivo. Isso deve dizer que é um arquivo de texto e em qual codificação ele parece estar.
file foo.txt
foo.txt: ASCII text
Se você obtiver algo estranho ou em uma codificação de caracteres diferente, isso será um problema. Você também pode inspecionar o despejo hexadecimal do arquivo por:
hexdump -C foo.txt
00000000 48 65 6c 6c 6f 0a 48 61 6c 6c 6f 0a |Hello.Hallo.|
0000000c
Além disso, como bônus, há um emulador Linux no navegador que pode ser usado para ajudar você a brincar:
Ele ainda tem o GCC, então você pode compilar o código C!