Это продолжение этого вопроса. Различия перечислены ниже.

Вот выдержка из того, что находится внутри foo.txt (это гигантский):

^.{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$

И вот выдержка из того, что находится внутри bar.txt (также гигантского):

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

И вот команда, которую я запускаю:

grep -Ef foo.txt bar.txt

grep выплевывает это:

grep: invalid character range

Вместо этого я хотел бы, чтобы grep это:

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

Что я делаю неправильно? Что я могу изменить, чтобы grep то, что мне нужно?

Mac OS X Yosemite, bash 3.2.57(1)-релиз

1 ответ1

0

Из комментариев к ОП я делаю вывод, что вы хотите, чтобы символы скобок "[" и "]" в foo.txt соответствовали соответствующим буквенным символам скобок в bar.txt. Предполагая, что это правильно, они должны быть экранированы обратной косой чертой в foo.txt (только).

Один из способов сделать это массовое изменение с помощью sed:

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

Это оставит вас с измененным foo.txt и исходным файлом как foo.txt.bak.

Если мои выводы не верны, пожалуйста, отредактируйте свое сообщение, включив в него определенные строки, которые вам не подходят. Строки, которые вы публикуете выше, корректно выполняют grep для меня, как только эта команда sed применяется к foo.txt.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .