Linux 使用SED/Perl删除包含数字的字符串部分
我的数据如下所示:Linux 使用SED/Perl删除包含数字的字符串部分,linux,perl,bash,unix,sed,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列中的数字部分 为什么这条线不起作用: sed 's/_\d+//g' 正确的方法是什么(一行)?试试: sed 's/_[0-9]\+//g' sed需要-r开
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 's/_[0-9]\+//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
我不知道为什么这不起作用,但是如果你用
[0-9]
替换\d
,它工作得很好。在GNUsed
中,\d
引入了一个十进制字符代码,在0-255范围内为一到三位。例如,要删除选项卡,可以执行以下操作:sed's/\d9/'
(或09
或009
)或用空格替换一些无法打印的字符:sed's/[\d1-\d31]//g'
ITYMperl-pe's/\ud+//g'
)
sed 's/_[0-9][0-9]*//g' file