Я приведу пример, чтобы проиллюстрировать мою проблему. Предположим, у нас есть имя файла «file.txt», который содержит следующую строку:Как сопоставить не string в gnu grep
AooYoZooYZoAoooooYZ
Я хотел бы использовать Grep, чтобы найти все подстроки, которые начинаются с «A» и заканчиваются «YZ», но не содержат «YZ» между «A» и «YZ». Нужный результат будет:
AooYoZooYZ
AoooooYZ
Моя догадка сделать следующее:
$ Grep -E -o «A [^ (YZ)] * YZ 'file.txt
Но выход только:
AoooooYZ
Я хотел бы скобки, чтобы держать их значение для YZ, но я читал в руководстве GNU Grep (http://www.gnu.org/software/grep/manual/grep.html), что: «Большинство мета-символы теряют свое особое значение в скобки ". Я также попытался:
$ Grep -E -o «A. * YZ file.txt
Но это выводит всю строку:
AooYoZooYZoAoooooYZ
Есть ли способ переопределить этот или другой способ решения моей проблемы?
Это сработало. Нашел хороший пример, объясняющий нежелезное сопоставление здесь, поскольку это было ново для меня: http://www.regular-expressions.info/repeat.html – ddetone