Чтобы заменить строку, вам нужно использовать sed
. Вот как это сделать.
$ var="|| InstanceId | i-0f85cb9ccb11fd035 ||"
$ printf '%s\n' "$var" | sed -r 's/\|\|[^\|]+\| [iI]-([^ ]+) \|\|/\1/g'
's/\|\|[^\|]+\| [iI]-([^ ]+) \|\|/\1/g'
- это шаблон, который вам нужно понять.
s/something/replacement/g
означает заменить любые вхождения "что-то" на "замена".
\|
это просто экранированный символ
Таким образом, мы ищем два канала, за которыми следует [^\|]+
, т. Е. Последовательность из одного или нескольких непутевых символов. Затем следует еще одна труба и пробел, \|
, Затем мы сопоставляем i-
или I-
, читаем последовательность непробельных символов, помещаем их в группу, используя круглые скобки, ([^ ]+)
затем следуем пробел и два канала \|\|
,
Затем мы заменим все это первой группой, то есть \1
.