grep -Ef говорит "недопустимый диапазон символов". Опять

grep -Ef говорит "недопустимый диапазон символов". Опять

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

Вот отрывок из того, что находится внутри 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

Из комментариев к OP я делаю вывод, что вы хотите, чтобы символы скобок "[" и "]" в 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.

Связанный контент