我有一个看起来像这样的数据:删除部分
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
数字部分,为什么这行不工作:
sed 's/_\d+//g'
做什么是正确的方法(单行)?
我有一个看起来像这样的数据:删除部分
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
数字部分,为什么这行不工作:
sed 's/_\d+//g'
做什么是正确的方法(单行)?
您需要为sed的-r开关和字符类。
$ 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
ITYM'perl -pe's/_ \ d + // g'' :) – hobbs 2010-08-06 07:28:23
尝试:
sed 's/_[0-9]\+//g'
sed 's/_[0-9][0-9]*//g' file
我不知道为什么,这并不工作,但如果你将其替换'\ D''[0-9]'它工作正常。 – jtbandes 2010-08-06 05:08:53
在GNU'sed'中,'\ d'在0-255范围内引入一到三位数字的十进制字符代码。例如,要删除一个选项卡,您可以这样做:'sed's/\ d9 //''(或'09'或'009')或用空格替换一些不可打印的字符:'sed's/[\ d1- \ d31]// g'' – 2010-08-06 06:07:00