有一个字符串,其名称包含数字和字母。符号 '_' 划分字符串的不同部分。
X23X_1XY4_XXXX_Y12Y_YYX2_XXYY
我只想要第二、第三和第四部分:
1XY4_XXXX_Y12Y
使用 cut 可以执行以下操作:
echo 'X23X_1XY4_XXXX_Y12Y_YYX2_XXYY' | cut -d'_' -f2,3,4
如何用 sed 来做?
答案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