使用SED / Perl删除包含数字的字符串部分

时间:2010-08-06 04:58:36

标签: linux perl bash unix sed

我的数据如下:

AB208804_1 446 576 AB208804_1orf 0
AB208804_20 446 576 AB208804_20orf 0

我想将它们转换成这个:

AB208804 446 576 AB208804orf 0
AB208804 446 576 AB208804orf 0

只需删除第1列和第4列中的_ \ digit部分。

为什么这条线不起作用:

sed 's/_\d+//g'

这样做的正确方法是什么(单行)?

3 个答案:

答案 0 :(得分:6)

你需要-r开关和sed的字符类。

$ echo "AB208804_1 446 576 AB208804_1orf 0" | sed -r 's/_[0-9]+//g'
AB208804 446 576 AB208804orf 0

或者,因为你问过;在perl:

$ echo "AB208804_1 446 576 AB208804_1orf 0" | perl -ne 's/_\d+//g; print $_'
AB208804 446 576 AB208804orf 0

答案 1 :(得分:2)

尝试:

sed 's/_[0-9]\+//g' 

答案 2 :(得分:1)

 sed 's/_[0-9][0-9]*//g' file