Существует строка, которая содержит числа и буквы на ее имя. Символ '_' делит различные части строки.
X23X_1XY4_XXXX_Y12Y_YYX2_XXYY
Я хочу иметь только второй, третий и дальше части:
1XY4_XXXX_Y12Y
Используя сокращение можно сделать:
echo 'X23X_1XY4_XXXX_Y12Y_YYX2_XXYY' | cut -d'_' -f2,3,4
Как сделать это с sed?
Один путь состоял бы в том, чтобы использовать группы получения:
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