首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用awk或sed从输入文件中提取文本块,并将每个块保存在单独的输出文件中

使用awk或sed从输入文件中提取文本块,并将每个块保存在单独的输出文件中
EN

Stack Overflow用户
提问于 2018-09-29 06:40:28
回答 1查看 356关注 0票数 0

我正在尝试使用"awk“来提取基于分隔符(#和-- )的文本块(仅第一个字段/列,但多行,块之间的行数不同)。这些列表示序列ID。

使用"awk“我可以分隔这些块并打印第一列,但我不能将这些文本块重定向到单独的输出文件。

代码:

代码语言:javascript
复制
awk '/#/,/--/{print $1}' OTU_test.txt

理想情况下,我希望根据在每个块的第一行中找到的一些文本来保存每个文件(文本块,不包括分隔符)(例如MEMB.nem.6;MEMB.nem)。是内容,但数字会发生变化)

输入文件enter image description here示例

代码语言:javascript
复制
#OTU_MEMB.nem.6
EF494252.1.2070 6750.0 D_0__Eukaryota;D_1__Opisthokonta;D_2__Nucletmycea;D_3__Fungi;D_7__Dothideomycetes;D_8__Capnodiales;D_9__uncultured fungus 1.000
FJ235519.1.1436 5957.0 D_0__Eukaryota;D_1__Opisthokonta;D_2__Nucletmycea;D_3__Fungi;D_7__Dothideomycetes;D_8__Capnodiales;D_9__uncultured fungus 1.000
New.ReferenceOTU9219 5418.0 D_0__Eukaryota;D_1__Opisthokonta;D_2__Nucletmycea;D_3__Fungi 1.000 
GQ120120.1.1635 471.0 D_0__Eukaryota;D_1__Opisthokonta;D_2__Nucletmycea;D_3__Fungi;D_7__Dothideomycetes;D_8__Capnodiales;D_9__uncultured fungus 0.990
--
#OTU_MEMB.nem.163
New.CleanUp.ReferenceOTU59580 12355.0 D_0__Eukaryota;D_1__Opisthokonta;D_2__Holozoa;D_3__Metazoa (Animalia);D_7__Chromadorea;D_8__Monhysterida 0.700
New.ReferenceOTU11809 1312.0 D_0__Eukaryota;D_1__Opisthokonta;D_2__Holozoa;D_3__Metazoa (Animalia);D_7__Chromadorea;D_8__Monhysterida 0.770
--
#OTU_MEMB.nem.35
New.CleanUp.ReferenceOTU120578 12116.0 D_0__Eukaryota;D_1__Opisthokonta;D_2__Holozoa;D_3__Metazoa (Animalia);D_7__Chromadorea;D_8__Desmoscolecida;D_9__Desmoscolex sp. DeCoSp2 0.780

预期的输出文件(仅第一列,无分隔符)。

MEMB.nem.6.txt

代码语言:javascript
复制
EF494252.1.2070 
FJ235519.1.1436 
New.ReferenceOTU9219 
GQ120120.1.1635

MEMB.nem.163.txt

代码语言:javascript
复制
New.CleanUp.ReferenceOTU59580
New.ReferenceOTU11809

MEMB.nem.35.txt

代码语言:javascript
复制
New.CleanUp.ReferenceOTU120578

我已经搜索了很多,但到目前为止还没有成功。如果有人能给我建议,我会很高兴的。

谢谢,

提亚戈

EN

回答 1

Stack Overflow用户

发布于 2018-09-29 21:16:38

代码语言:javascript
复制
awk '
sub(/^#OTU_/,"") {
    close(out)
    out = $0 ".txt"
    next
}
!/^--/ {
    print $1 > out
}
' file
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52563448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档