GREP в качестве разделителей строк использует \n символ, а есть ли утилита, которая работала бы как grep, только для наборов строк?
Скажем, имеется группа строк (байт) которая начинаться\оканчивается с какого-то символа (строки). Каждая новая группа байт начинается с этого символа (строки), или REGEX. Нужно отфильтровать содержимое и показать те группы строк, в которых есть некоторое содержимое. Т.е. выводить не одну строк с содержимым, а сразу группу строк в котором это содержимое есть.
Параметры A и B не предлагать. Хочется стандартного решения, а оно вообще есть?
[guest@localhost ~]$ s="\
> 1. а
> g
> --
> 2. b
> y
> --
> 3. c
> o
> --
> 4. d
> g
> --"
[guest@localhost ~]$
[guest@localhost ~]$ echo "$s"
1. а
g
--
2. b
y
--
3. c
o
--
4. d
g
--
[guest@localhost ~]$
[guest@localhost ~]$ echo "$s" | grep -C 1 --no-group-separator '^g$'
1. а
g
--
4. d
g
--
[guest@localhost ~]$
Но для общего случая (когда там количество строк может меняться) лучше подойдёт sed, так как он может накапливать знания.
1. греп не сможет.
2. сед сможет но нужно смотреть что именно не всегда он хорошо работает.
3. возможно вам вполне хватит patch
5. если это конфиги то для этого ест отдельные системные утилиты например ansible