以下のファイルでは、「XC:Z:」と「XM:Z:」の2つの文字列を抽出します。たとえば:1行に複数の正規表現マッチを抽出する
- 1行目の出力はこのようになります "TGGTCGGCGCGT、GAGTCCGT" は
- 2行目の出力はこのようになります "GAAGCCGCTTCC、ACCGACGG" は
ファイルの元のバージョンがありもしまた
MOUSE_10 XC:Z:TGGTCGGCGCGT RG:Z:A XM:Z:GAGTCCGT ZP:i:33
MOUSE_10 XC:Z:GAAGCCGCTTCC NM:i:0 XM:Z:ACCGACGG AS:i:16
MOUSE_10 ZP:i:36 XC:Z:TCCCCGGGTACA NM:i:0 XM:Z:GGGACGGG ZP:i:28
MOUSE_10 XC:Z:CAAATTTGGAAA RG:Z:A NM:i:1 XM:Z:GCAGATAG
、以下の基準のそれぞれは、ボーナスになりますが、必須ではありません。次の例よりも多くの列と行数百万、数が、それはあなたのアイデアを与える必要がありますあなたはそれが仕事を得ることができます:
- 使用標準のbashツール:AWK、sedは、grepを、など(無GAWK、csvtools、...)
- は、私たちがどのXC順序を知っていないと仮定しますXMが現れます(XCはほぼ確実ですが、確認方法は不明です)。ただし、出力では、XC文字列は可能な限りXM文字列の前にある必要があります。
awk extract multiple groups from each lineの回答は非常に近くにありますが、match(...)を使用するときはいつでも「予期しないトークンに近い構文エラー」というメッセージが表示されます。
あなたのソリューションを楽しみにしています! awk
解決後
おかげで、
フェリックス
「GAWK」で簡単に – RomanPerekhrest
エラーが発生したコードを表示する必要があります。これは簡単に修正できます。 –
'XC:Z:'の3ロットと 'XM:Z:'の2ロットを一行で得ることができますか?あなたは他のパターンなしで1つのパターンを持つことができますか?プレフィックスを保持する必要がありますか? 1つの入力行に2つ以上の一致があっても、出力にパターンごとに1行が必要なので、出力の行の総数は入力の行数よりも大きくなる可能性があります。それは難しいことではありません。それはちょうどあなたがしたいことを正確に働くことの単なる問題です。サンプル出力データを使ってMCVE([MCVE])を作成する(入力が良好であることがわかります)。 –