Для набора номеров строк… Извлечь содержимое между первым и последним появлением разных шаблонов

Использование GNU sed :

$ show inventory | sed -n '/^NAME: "1"/,+1s/^.*, //p'
DESCR: "WS-C3750G-12S"
SN: FDO1129Z9ZJ

Сценарий редактирования sed будет искать строки, начинающиеся с NAME "1" , и применяет замену к этим строкам и первая сразу после строки.

Замена удалит все в строках до последней запятой включительно (и пробел сразу после нее). Полученные строки выводятся на терминал.

Если вам нужен только серийный номер и последняя строка вывода:

$ show inventory | sed -n -e '/^NAME: "1"/{n;s/^.*, //p}' -e '$p'
SN: FDO1129Z9ZJ
Barragan_3750>

Здесь сценарий sed находит строку, как и раньше, но сразу же читает следующую строку (с n ) и выполняет ту же замену, что и раньше, только в этой строке. Это даст вам серийный номер.

Затем он также печатает последнюю строку ввода.

1
17.11.2018, 02:36
1 ответ

Сperl:

#!/usr/bin/env perl

use strict;
use warnings;

use v5.10;

my @lines = (1, 2, 4);

while(<>) {
    next unless $. ~~ @lines;
    chomp;
    s#.*?(<book>.*</book>).*#$1#;
    say
}
1
27.01.2020, 23:18

Теги

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