我有一个包含三列(制表符分隔)的输入数据,如下所示:
a mrna_185598_SGL 463
b mrna_9210_DLT 463
c mrna_9210_IND 463
d mrna_9210_INS 463
e mrna_9210_SGL 463如何使用sed/awk将其修改为四列数据,如下所示:
a mrna_185598 SGL 463
b mrna_9210 DLT 463
c mrna_9210 IND 463
d mrna_9210 INS 463
e mrna_9210 SGL 463原则上,我想将原始的"mrna“字符串分成两部分。
发布于 2010-01-28 11:38:49
像这样的东西
awk 'BEGIN{FS=OFS="\t"}{split($2,a,"_"); $2=a[1]"_"a[2]"\t"a[3] }1' file输出
# ./shell.sh
a mrna_185598 SGL 463
b mrna_9210 DLT 463
c mrna_9210 IND 463
d mrna_9210 INS 463
e mrna_9210 SGL 463在Solaris上使用nawk
如果你有bash
while IFS=$'\t' read -r a b c
do
front=${b%_*}
back=${b##*_}
printf "$a\t$front\t$back\t$c\n"
done <"file"发布于 2010-01-28 11:37:21
gawk:
{
print $1 "\t" gensub(/_/, "\t", 2, $2) "\t" $3
}发布于 2010-01-28 11:40:04
只要它们看起来和你发布的没有太大的不同:
sed -E 's/mrna_([0-9]+)_/mrna_\1\t/'https://stackoverflow.com/questions/2152115
复制相似问题