Я пытаюсь grep блоки из базы данных с шаблоном.
После этого я хочу снова вырвать из каждого блока какой-то узор.
Но мне нужно только одно совпадение для каждого шаблона каждого блока.
файл выглядит так:Grep/Sed/Awk блок и поиск шаблона
inetnum: *.*.*.* - *.*.*.*
netname: Ch-123
descr: companyname
descr: address 1
descr: address 2
descr: address 3
country: FR
admin-c: DUMY
tech-c: DUMY
status: DUMY
mnt-by: mnt
changed: [email protected]
created: 1970-01-01T00:00:00Z
last-modified: 1970-01-01T00:00:00Z
source: RIPE
remarks: ****************************
remarks: ****************************
remarks: ****************************
remarks: ****************************
remarks: ****************************
remarks: ****************************
% Tags relating to '*.*.*.* - *.*.*.*'
% RIPE-REGISTRY-RESOURCE
inetnum: *.*.*.* - *.*.*.*
netname: Ch-123
descr: companyname
descr: address 1
descr: address 2
descr: address 3
country: FR
admin-c: DUMY
tech-c: DUMY
status: DUMY
mnt-by: mnt
changed: [email protected]
created: 1970-01-01T00:00:00Z
last-modified: 1970-01-01T00:00:00Z
source: RIPE
remarks: ****************************
remarks: ****************************
remarks: ****************************
remarks: ****************************
remarks: ****************************
remarks: ****************************
% Tags relating to '*.*.*.* - *.*.*.*'
% RIPE-REGISTRY-RESOURCE
Так что я должен получить каждый блок, где "страна: CH" есть. После этого мне нужно, например, для каждого блока только ОДНО РЕЗУЛЬТАТ, как только ОДИН 'descr', ONE 'netname', даже больше, мне нужно первое для имени компании.
Требование:
- Получить блоки файла, которые имеют "страна: CH"
- Затем Grep/AWK/СЭД независимо только один из этой "inetnum, сетевое_имя, Descr"
Вывод должен выглядеть так, чтобы каждый блок, где «страна: CH».
*.*.*.* - *.*.*.*
Ch-123
companyname
И НЕ:
Вход:
grep -E "inetnum: (.*)\n|netname: (.*)\|descr: (.*)\n" file
Выход:
*.*.*.* - *.*.*.*
Ch-123
companyname
address 1
address 2
address 3
я получаю только что каждый раз. Я пытаюсь сделать это с регулярным выражением, но никогда не использовал его раньше.
Я надеюсь, что кто-то может мне помочь.
И: Почему: sed -n '/inetnum/!b;:a;/% Tags relating to/!{$!{N;ba}};{/country: ch/p}' file
никогда не заканчивается?
пожалуйста, опубликовать образец данных и некоторые примеры желаемого (и нежелательные) матчей. –
Разве это так лучше? – tokyodrift1993
Не совсем. Вам нужно показать FEW блок ввода и показать вывод, который вы хотите, независимо от вашего поиска: один блок со всеми полями? Несколько блоков с подмножеством полей? Подмножество полей по всем блокам? Что-то другое? Держите его простым, ясным, точным и проверяемым (то есть с чем-то, с чем мы можем выполнить потенциальное решение). И не показывайте «decr1» и т. Д., А затем попытайтесь описать его в комментариях внизу - покажите некоторые фактические значения в примере, например, которые могут отображаться в ваших реальных данных. –