Извлечение информации из большого файла, использование символа новой строки в регулярном выражении awk

Мне нужно извлечь некоторую информацию из очень большого файла.
Я хочу извлечь конкретные строки с помощью регулярных выражений.
Какой самый быстрый способ сделать это?
Я пишу в C ++ на Linux.

Я хочу использовать grep, но, кажется, мое регулярное выражение не работает, как ожидалось.
Например \s, \w не работают должным образом.
В man grep написано что \wа также [:alnum:] являются синонимами, так что \w должен работать должным образом, но это не должно

Мне нужно использовать символы новой строки в моем регулярном выражении, поэтому я не могу использовать grepПоэтому я решил использовать awk,
Как я должен использовать newline персонаж в awk регулярное выражение?
Давайте рассмотрим, у нас есть файл (test.txt) с содержанием ниже:

ПРИВЕТ worl_d5;
какое-то утверждение
Привет, мир1;
немного
заявление
Привет
Привет
какое-то утверждение

И я хочу получить только эти строки:

ПРИВЕТ worl_d5;
какое-то утверждение
Привет, мир1;
немного
заявление

Я хочу найти строки, которые начинаются с HELLO слово, за которым следует пробел (ы), затем буквенно-цифровой (или содержащие /) слово, за которым следует пробел (символы), а затем один ;, Но я хочу получить такие строки, когда они сопровождаются some statement только линия

Я написал:

awk '/HELLO[[:space:]]([[:alnum:]]|\/)+[[:space:]];\n[[:space:]]*some[[:space:]] statement [[:space:]];/ { print }' test.txt

Но я не мог получить необходимые результаты.

Или просто приведите пример, где newline используется в регулярных выражениях.

-2

Решение

Я решил это с помощью pcregrep а также newline просто работал нормально!

pcregrep -M '(HELLO[[:space:]]([[:alnum:]]|\/|_)+[[:space:]];)[\r\n]([[:space:]]*some[[:space:]]statement[[:space:]];)' test.txt
0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector