我的数据如下:
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'
这样做的正确方法是什么(单行)?
答案 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