trial.fastq
次の形式のファイルを編集したいと思います。
@NAME123.15.1 15 length=151
GTAGCNTACGGGAGGCAGCAGTGGGGAATTTTCC
+NAME123.15.1 15 length=151
AAABB#>>AABDGCEGGGFGGGHHHGGGFHHGHH
@NAME123.14.1 14 length=150
TTCGCNTACGGGAGGCAGCAGTAGGGAATCTTCC
+NAME123.14.1 14 length=150
ABBBB#>>ABBBGGGGGEGGGGHDGFFFHHGHHH
形式を次のように変更したいと思います。
@Inst:1:FID:LANE:TILE:15:Y 1:Y:0:NAME123
+GTAGCNTACGGGAGGCAGCAGTGGGGAATTTTCC
@Inst:1:FID:LANE:TILE:14:Y 1:Y:0:NAME123
+TTCGCNTACGGGAGGCAGCAGTAGGGAATCTTCC
sed
以下を含むいくつかの形式を試しました。
sed -i -E 's/@(\w+).(\d+).(\d)\s\d+\slength=\d+\n.*/@Inst:1:FID:LANE:TILE:\2:Y \3:Y:0:\1\n/g' trial.fastq > trial_new.fastq
TextWranglerをコピーしてgrep検索を見つけて見つけました。また:
sed -e 's/\(@\w\).\(\d..+\).\(\d\)\s\d..*\slength\=\d..*\n.*$(\w..*)\(.*\)$\+.*$.*$/@Inst\:1\:FID\:LANE\:TILE\:\2\:Y \3\:Y\:0\:\1\n\4/g' trial.fastq
私は間違った方向に行くと確信しています。誰かが私が間違っているかどうか、この問題を解決する方法を理解するのに役立ちますか?
答え1
希望の出力を正しく理解してください。
$ sed -nr '/#/d;s/@([^\.]+)[^ ]+ ([0-9]+) .*/@Inst:1:FID:LANE:TILE:\2:Y 1:Y:0:\1/p;s/^[A-Z]/\+&/p' file
@Inst:1:FID:LANE:TILE:15:Y 1:Y:0:NAME123
+GTAGCNTACGGGAGGCAGCAGTGGGGAATTTTCC
@Inst:1:FID:LANE:TILE:14:Y 1:Y:0:NAME123
+TTCGCNTACGGGAGGCAGCAGTAGGGAATCTTCC
説明する
-n
私たちが要求するまで印刷しないでください-r
EREを使用/#/d
行を削除#
([^\.]+) save some characters that are not
``後で[^ ]+ ([0-9]+) .*
スペースの間に数字を保存する\1
代替保存スキーマの逆参照;
シェルと同様に、別のコマンドs/^[A-Z]/\+&/
大文字で始まる行を接頭辞に置き換えます。+
p
私たちが処理した行を印刷してください
-i
出力が必要かどうかをテストした後にファイルを編集するには、このフラグを使用します(コマンドの繰り返しを使用sed -nri ....
)。