Вырезание строки с помощью sed

Существует строка, которая содержит числа и буквы на ее имя. Символ '_' делит различные части строки.

X23X_1XY4_XXXX_Y12Y_YYX2_XXYY

Я хочу иметь только второй, третий и дальше части:

1XY4_XXXX_Y12Y

Используя сокращение можно сделать:

echo 'X23X_1XY4_XXXX_Y12Y_YYX2_XXYY' | cut -d'_' -f2,3,4

Как сделать это с sed?

1
задан 22 August 2018 в 15:18

1 ответ

Один путь состоял бы в том, чтобы использовать группы получения:

echo 'X23X_1XY4_XXXX_Y12Y_YYX2_XXYY' |
  sed -E s/'([^_]*)_([^_]*)_([^_]*)_([^_]*)_.*/\2_\3_\4/'
1XY4_XXXX_Y12Y

Для разграниченных данных awk часто более прост:

echo 'X23X_1XY4_XXXX_Y12Y_YYX2_XXYY' |
  awk -F_ 'BEGIN{OFS=FS} {print $2,$3,$4}'
1XY4_XXXX_Y12Y
3
ответ дан 3 December 2019 в 07:23

Другие вопросы по тегам:

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