私はこのようなファイルを持っている:>で始まる行を> awkコマンドで同じ行の15列に置き換えるには?
私はその第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行目に置き換えようとしていました。
ので、私が出力されたとして持っていることを期待するもの:
>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)
はので、私は、2つの第15回コラムと * >
で始まる行LL * を交換で欲しいと私はしたいものをまだ初めで>
持っています!
気にしますか?フィールドの一部であっても、サンプル出力には表示されません。 –
パイプで区切られたデータではありませんか?フィールドについて話している場合は、別のフィールドセパレータが必要です。また、このためにperlを使用する方がずっと簡単でしょうか? – tchrist
@tchristデータを見ると、空白で区切られたフィールドのようです。私も最初は混乱していました。 awkではそれほど簡単ではないので、perlでもっと簡単にできるとは思えません。 –