如何使用sed/awk/perl从特定列中删除n个字符

sca*_*der 1 unix linux perl awk sed

我有以下制表符分隔数据:

chr1    3119713 3119728 MA05911Bach1Mafk    839 +
chr1    3119716 3119731 MA05011MAFNFE2  860 +
chr1    3120036 3120051 MA01502Nfe2l2   866 +
Run Code Online (Sandbox Code Playgroud)

我想要做的是从第4列删除7个字符.导致

chr1    3119713 3119728 Bach1Mafk   839 +
chr1    3119716 3119731 MAFNFE2 860 +
chr1    3120036 3120051 Nfe2l2  866 +
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?请注意,输出也需要TAB分隔.

我坚持使用以下代码,从第一列开始替换,我不想要

sed 's/^.\{7\}//' myfile.txt
Run Code Online (Sandbox Code Playgroud)

Mic*_*rke 5

 awk  '{ $4 = substr($4, 8); print }'
Run Code Online (Sandbox Code Playgroud)

  • 抱歉错过了这个要求......`awk'BEGIN {OFS ="\ t"} {$ 4 = substr($ 4,8); print}'` (3认同)

zdi*_*dim 5

perl -anE'$F[3] =~ s/.{7}//; say join "\t", @F' data.txt
Run Code Online (Sandbox Code Playgroud)

要么

perl -anE'substr $F[3],0,7,""; say join "\t", @F' data.txt
Run Code Online (Sandbox Code Playgroud)