Eu usaria awk
nessa situação
awk -F"\t" '$3 == "abcdefghikl" {print}' filename > outputfile
Quando você define o separador como uma guia e imprime apenas as linhas em que a terceira coluna corresponde à chave.
Eu tenho um arquivo de texto grande com mais de 75 milhões de registros. Cada registro consiste em tokens de string (atributos) e entre cada token existe um caractere de tabulação. Este é um exemplo de dois registros:
43 ao489fer809 abcdefghikl 1.41 0
81 ijfij03iuff abcdefghikl e89rt904i3 094utofgimf 0.13 1
Assim, cada registro consiste em 5 tokens (observe que o terceiro token inclui o caractere de espaço).
Agora vamos supor que eu tenha a string "abcdefghikl" -let's call it the key-. Estou interessado no terceiro sinal. Então eu quero comparar a chave com o terceiro token e se o token é exatamente a chave (e não contém apenas a chave como meu segundo registro), para gravar o registro vencedor em um novo arquivo . Alguma idéia do grep?
$ cat -v td
43 ao489fer809 abcdefghikl 1.41 0
81 ijfij03iuff abcdefghikl e89rt904i3 094utofgimf 0.13 1
$ grep -P '\tabcdefghikl\t' td
43 ao489fer809 abcdefghikl 1.41 0
ou se for mimado
$ grep -P '^[^\t]*\t[^\t]*\tabcdefghikl\t' td
43 ao489fer809 abcdefghikl 1.41 0
Tags grep unix string-manipulation