Se você quiser que as linhas não terminem com '2', tente o seguinte:
grep '[^2]$' <filename>
Aqui '$' corresponde ao final da linha, '[^ 2] significa algo diferente de' 2 '. Então, '[^ 2] $' significa corresponder a qualquer caractere diferente de '2' no final da linha.
Seu comando egrep '2.+' mysampledata.txt
, procurará as linhas contendo '2' e, em seguida, qualquer caractere ocorrendo uma ou mais vezes. Então, a saída deve ser:
Fred apples 20
A linha adicional Susy oranges 12
pode ser devido a um space
indevidamente colocado no final da linha.
Editar: O seguinte irá considerar também qualquer número de espaços em branco ou quaisquer caracteres não imprimíveis no final:
grep -v '2[[:blank:][:cntrl:]]*$' <filename>
Isso significa imprimir as linhas que não têm '2' ou '2' seguidas por qualquer número de espaços em branco ou caracteres de controle no final da linha.