Este es un seguimiento deesta pregunta. Las diferencias se enumeran a continuación.
Aquí hay un extracto de lo que hay dentro de foo.txt (es 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$
Y aquí hay un extracto de lo que hay dentro de bar.txt (también 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
Y aquí está el comando que ejecuto:
grep -Ef foo.txt bar.txt
grep
escupe esto:
grep: invalid character range
En lugar de eso, me gustaría grep
mostrar esto:
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
¿Qué estoy haciendo mal? ¿Qué tengo que cambiar para grep
generar lo que necesito?
Mac OS X Yosemite, versión bash 3.2.57(1)
Respuesta1
De los comentarios al OP deduzco que desea que los caracteres entre corchetes "[" y "]" en foo.txt coincidan con los caracteres entre corchetes literales correspondientes en bar.txt. Suponiendo que sea correcto, se les debe aplicar una barra invertida en foo.txt (solamente).
Una forma de realizar esta modificación en masa es con sed
:
sed -i.bak -e 's/\[/\\[/g' -e 's/\]/\\]/g' foo.txt
Eso lo dejará con un foo.txt modificado y el archivo original como foo.txt.bak.
Si mis inferencias no son correctas, edite su publicación para incluir líneas específicas que no funcionen para usted. Las líneas que publicaste arriba funcionan correctamente para mí, una vez que este comando sed se aplica a foo.txt.