使用 sed 剪切字符串

使用 sed 剪切字符串

有一个字符串,其名称包含数字和字母。符号 '_' 划分字符串的不同部分。

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

相关内容