sedを使用してファイルの一部のみを保持し、順序を変更します(textWrangler grep構文ベース)。

sedを使用してファイルの一部のみを保持し、順序を変更します(textWrangler grep構文ベース)。

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私たちが要求するまで印刷しないでください
  • -rEREを使用
  • /#/d行を削除#
  • ([^\.]+) save some characters that are not``後で
  • [^ ]+ ([0-9]+) .*スペースの間に数字を保存する
  • \1代替保存スキーマの逆参照
  • ;シェルと同様に、別のコマンド
  • s/^[A-Z]/\+&/大文字で始まる行を接頭辞に置き換えます。+
  • p私たちが処理した行を印刷してください

-i出力が必要かどうかをテストした後にファイルを編集するには、このフラグを使用します(コマンドの繰り返しを使用sed -nri ....)。

おすすめ記事