grep с разрывами строк

Выполните:

$ sudo yum install epel-release
$ sudo yum install alpine

Первый добавляет EPEL в ваш список репозиториев, а EPEL предоставляет alpine.

ПРИМЕЧАНИЕ: Также убедитесь, что репо включено в /etc/yum.repos.d/epel.repo :

enabled=1

или из командной строки:

$ sudo yum-config-manager --enable epel
1
27.04.2017, 18:54
3 ответа

Я бы предложил использовать pcregrep, а не обычный grep для этого, например.

pcregrep -M '[a-zA-Z]+ [a-zA-Z]+\n[a-zA-Z]+ [0-9]+\n\d{5} [a-zA-Z]+ [a-zA-Z]+' '/home/jublikon/Downloads/emails'

Если вам нужен номер строки, то pcregrep поддерживает ту же опцию -n, что и grep, например.

$ pcregrep -nM '[a-zA-Z]+ [a-zA-Z]+\n[a-zA-Z]+ [0-9]+\n\d{5} [a-zA-Z]+ [a-zA-Z]+' emails
66:Arthur Dent
Galaxy 7
74369 Third Orbit
1
27.01.2020, 23:13

Этот почтовый индекс выглядит несколько уникальным, поэтому, если в файле нет ничего похожего на индекс, но таковым не является, мы можем просто grep -B получить предыдущие строки. :

$ grep -B2 -Ee '^[0-9]{5} ' spam
Arthur Dent
Galaxy 7
74369 Third Orbit

т.е. найти пять цифр и пробел в начале строки, вывести эту строку и две предыдущие. (-B для «до», -A для «после», -C для контекста или в обоих направлениях.)

2
27.01.2020, 23:13

Во-первых, в вашем файле, который вы здесь показываете, нет соответствующих данных. И предполагая, что вы нашли файл с данными, которые вы собираетесь искать, вы должны вызвать grepс параметрами:

grep -zoP 

-z будет рассматривать файл как одну огромную строку. -o вы получите только соответствующую часть -P активирует механизм регулярных выражений Perl, что позволит grep понять, какие регулярные выражения у вас есть.

11
27.01.2020, 23:13

Теги

Похожие вопросы