我有文件,它看起来像这样:如何用awk命令替换以同一行的第15列开始的行?
>gi|358482566|ref|NW_003766328.1| Gallus gallus breed Red Jungle fowl, inbred line UCD001 unplaced genomic scaffold, Gallus_gallus-4.0 ChrUn_7180000961607, whole genome shotgun sequence
TCTGTCTCTTGTCACTGTATTGTAGTGTGAACCCCTTAAAGGGAAGACCTGCTCTCCTTTGAAAATGCTT
GCTCATCTATATGCCTCATGCATACCCTCACTGGCAAAGGAGAGCTGAAGTAATTTTAGGACAGAGGAGT
ACTAGATTGTA
>gi|358482565|ref|NW_003766329.1| Gallus gallus breed Red Jungle fowl, inbred line UCD001 unplaced genomic scaffold, Gallus_gallus-4.0 ChrUn_7180000961609, whole genome shotgun sequence
TTTGACCAATGCATTTCAGCATGTTTTTTGACACTAGGTATGCCATTTGGGATGACAATATCAGTTTCCA
TTTCCATTAGAGGAAAATAAGGTT
我想要替换所有开始>
及其15列线。我不知道如何用列替换该行,所以我试图用第15列替换该行的所有列。
所以我希望有作为输出是:
>ChrUn_7180000961607
TCTGTCTCTTGTCACTGTATTGTAGTGTGAACCCCTTAAAGGGAAGACCTGCTCTCCTTTGAAAATGCTT
GCTCATCTATATGCCTCATGCATACCCTCACTGGCAAAGGAGAGCTGAAGTAATTTTAGGACAGAGGAGT
ACTAGATTGTA
>ChrUn_7180000961609
TTTGACCAATGCATTTCAGCATGTTTTTTGACACTAGGTATGCCATTTGGGATGACAATATCAGTTTCCA
TTTCCATTAGAGGAAAATAAGGTT
这些都是我的命令:
awk '{if ($1 ~ />/) for (i=1; i<=19; i++) gsub ($i, $15)}'
test.fa
当我使用这个我得到的文件中的某些变化,但不是我想要的!列15被删除!
awk '{if ($1 ~ />/) for (i=1; i<=19; i++) a= $15 gsub($i, a)}'
gga_ref_Gallus_gallus-4.0_unplaced.fa
当我使用这一个时,我得到这个错误!
awk: (FILENAME=gga_ref_Gallus_gallus-4.0_unplaced.fa FNR=1) fatal: sub_common: buf: can't allocate 521711124992 bytes of memory (Cannot allocate memory)
所以我想要的是二取代* LL与 * >
与15列启动线,我想还是在开始>
!
你在乎那是第15场的一部分逗号?即使他们是该领域的一部分,您也不会在示例输出中显示他们。 – 2012-02-15 15:19:47
这不是管道分离的数据吗?如果你在谈论领域,你需要一个不同的领域分隔符。另外,使用perl这样做会不会更容易? – tchrist 2012-02-15 15:22:07
@tchrist如果您查看数据,它似乎是以空格分隔的字段;最初我也感到困惑。在awk中看到它是微不足道的,我无法想象在perl中它会变得更容易。 – 2012-02-15 15:30:55