grep -Ef dizendo 'intervalo de caracteres inválido'. De novo

grep -Ef dizendo 'intervalo de caracteres inválido'. De novo

Este é um acompanhamentoessa questão. As diferenças estão listadas abaixo.

Aqui está um trecho do que está dentro do foo.txt (é gigantesco):

^.{64}  /Volumes/Documents - Part 1/July 2009/Mum & Dad/Winter Wonderland [日本].mkv$
^.{64}  /Volumes/Documents - Part 1/March 2004/Mac OS X/Adobe Illustrator Documents/swimming.zip$

E aqui está um trecho do que há dentro do bar.txt (também gigantesco):

c815bebbc553fdf13b16bc99d417053cbe22c13c714d12cf16e740516a5cdeda  /Volumes/Documents - Part 1/July 2009/Mum & Dad/Winter Wonderland [日本].mkv
cab951c9779db6d484cec544482e742c75effea61c426264cb47788fddd4999e  /Volumes/Documents - Part 1/March 2004/Baseball/Pro Yakyuu.7z
635431114b7d898cfebd78f25b50bfea1f1593c292c15e631377347abba3e0e6  /Volumes/Documents - Part 1/March 2004/Mac OS X/Adobe Illustrator Documents/swimming.zip

E aqui está o comando que executo:

grep -Ef foo.txt bar.txt

grepcospe isso:

grep: invalid character range

Em vez disso, gostaria grepde gerar isto:

c815bebbc553fdf13b16bc99d417053cbe22c13c714d12cf16e740516a5cdeda  /Volumes/Documents - Part 1/July 2009/Mum & Dad/Winter Wonderland [日本].mkv
635431114b7d898cfebd78f25b50bfea1f1593c292c15e631377347abba3e0e6  /Volumes/Documents - Part 1/March 2004/Mac OS X/Adobe Illustrator Documents/swimming.zip

O que estou fazendo de errado? O que tenho de mudar para grepproduzir o que preciso?

Mac OS X Yosemite, versão bash 3.2.57(1)

Responder1

Estou deduzindo dos comentários ao OP que você deseja que os caracteres de colchetes "[" e "]" em foo.txt correspondam aos caracteres de colchetes literais correspondentes em bar.txt. Supondo que isso esteja correto, eles precisam ter escape de barra invertida em foo.txt (apenas).

Uma maneira de fazer essa modificação em massa é com sed:

sed -i.bak -e 's/\[/\\[/g' -e 's/\]/\\]/g' foo.txt

Isso deixará você com um foo.txt modificado e o arquivo original como foo.txt.bak.

Se minhas inferências não estiverem corretas, edite sua postagem para incluir linhas específicas que não funcionam para você. As linhas que você postou acima fazem grep corretamente para mim, uma vez que este comando sed é aplicado a foo.txt.

informação relacionada