2017-08-30 8 views
0

私は、行の開始文字列を出力するとともにパターンを抽出しようとしています。 入力特定のパターンと一緒に行の最初の列を印刷するには?

Saureus1000(37 genes,10 taxa): Saureus08BA02176_00020(Saureus08BA02176) Saureus1269_00069(Saureus1269) Saureus170_00062(Saureus170) Saureus71193_00020(Saureus71193) SaureusED133_00019(SaureusED133) SaureusED98_00019(SaureusED98) SaureusLGA251_00019(SaureusLGA251) SaureusN305_00605(SaureusN305) SaureusRF122_00019(SaureusRF122) SaureusST398_00020(SaureusST398) Saureus08BA02176_01763(Saureus08BA02176) Saureus08BA02176_01805(Saureus08BA02176) Saureus08BA02176_01808(Saureus08BA02176) Saureus1269_01194(Saureus1269) Saureus1269_(Saureus1269) Saureus1269_01240(Saureus1269) Saureus71193_01635(Saureus71193) Saureus71193_01678(Saureus71193) Saureus71193_01681(Saureus71193) SaureusED133_01798(SaureusED133) SaureusED133_01840(SaureusED133) SaureusED133_01843(SaureusED133) SaureusED98_01777(SaureusED98) SaureusED98_01821(SaureusED98) SaureusED98_01824(SaureusED98) SaureusLGA251_01748(SaureusLGA251) SaureusLGA251_01790(SaureusLGA251) SaureusLGA251_01793(SaureusLGA251) SaureusN305_00013(SaureusN305) SaureusN305_00016(SaureusN305) SaureusN305_00059(SaureusN305) SaureusRF122_01807(SaureusRF122) SaureusRF122_01848(SaureusRF122) SaureusRF122_01851(SaureusRF122) SaureusST398_01884(SaureusST398) SaureusST398_01927(SaureusST398) SaureusST398_01930(SaureusST398) 
Saureus1001(35 genes,12 taxa): Saureus08BA02176_01441(Saureus08BA02176) Saureus1269_02301(Saureus1269) Saureus1269_02527(Saureus1269) Saureus71193_01310(Saureus71193) SaureusED98_01421(SaureusED98) SaureusED98_01424(SaureusED98) SaureusN305_02184(SaureusN305) SaureusN305_02188(SaureusN305) SaureusN305_02190(SaureusN305) SaureusRF122_01383(SaureusRF122) SaureusRF122_01386(SaureusRF122) SaureusST398_01476(SaureusST398) Saureus08BA02176_01442(Saureus08BA02176) Saureus08BA02176_01443(Saureus08BA02176) Saureus08BA02176_01445(Saureus08BA02176) Saureus1269_02302(Saureus1269) Saureus1269_02529(Saureus1269) Saureus1364_00430(Saureus1364) Saureus170_00571(Saureus170) Saureus170_00574(Saureus170) Saureus302_00352(Saureus302) Saureus302_00556(Saureus302) Saureus71193_01311(Saureus71193) Saureus71193_01312(Saureus71193) Saureus71193_01314(Saureus71193) SaureusED98_01423(SaureusED98) SaureusED98_01426(SaureusED98) SaureusLGA251_01423(SaureusLGA251) SaureusN305_02185(SaureusN305) SaureusN305_02187(SaureusN305) SaureusST398_01477(SaureusST398) SaureusST398_01478(SaureusST398) SaureusST398_01548(SaureusST398) SaureusED133_01465(SaureusED133) Saureus302_01433(Saureus302) 

Req.Output

Saureus1000 Saureus08BA02176_00020 

私は見つけるために、このコードを使用しますが、このコマンドのための単一の行に必要な出力

awk '{print $1} {for(i=1;i<=NF;i++){if($i~/^Saureus08BA/){print $i}}}' file > test 

出力を得ていない

Saureus1000(37 
Saureus08BA02176_00020(Saureus08BA02176) 
Saureus08BA02176_01763(Saureus08BA02176) 
Saureus08BA02176_01805(Saureus08BA02176) 
Saureus08BA02176_01808(Saureus08BA02176) 
Saureus1001(35 
Saureus08BA02176_01441(Saureus08BA02176) 
Saureus08BA02176_01442(Saureus08BA02176) 
Saureus08BA02176_01443(Saureus08BA02176) 
Saureus08BA02176_01445(Saureus08BA02176) 
ています
+1

'Saureus08BA'は、あなたが最初の行のみのためにそれを期待していないか、両方の入力ラインにマッチングされますか? – Inian

答えて

0

GNU awkのソリューション:

awk 'match($0,/^([^(]+)\([^(]+(Saureus08BA[0-9]+_[0-9]+)/,a){ print a[1],a[2] }' file 
  • ([^(]+) - 「次を含む第二キャプチャグループ - 第一フィールド

  • (Saureus08BA[0-9]+_[0-9]+)から必要な部分をキャプチャSaureus」項目

出力:

Saureus1000 Saureus08BA02176_00020 
Saureus1001 Saureus08BA02176_01441 
+0

で述べたコマンドを使用ありがとうRoman..Itは、私の要件 –

+0

@ThulasiR用ワンライナー正確でしたどういたしまして – RomanPerekhrest

0

あなたの質問は、あなたの試行に基づいて明確ではありません私は文字列Saureus08BA02176と最初のフィールド値とSaureus08BA02176文字列値を印刷する行を探す必要があると考えています。

awk -F"[ (]" '/Saureus08BA02176/{print $1,$6}' Input_file 

EDIT:OP 1としては今も第一フィールドと文字列をチェックするためにOPの条件に溶液を加えます。

awk -F"[ (]" '/^Saureus1000/ && /Saureus08BA02176/{print $1,$6}' Input_file 
+0

多分簡単な言葉で私は開始文字列Saureus1000(最初の列)に続いてSaureus08BA02176だけを抽出したいと思います。 –

+0

@ThulasiR:今私のEDITソリューションをチェックし、私に知らせてください。 – RavinderSingh13

+0

こんにちは、Saurues08BA2176は6列目に存在しないすべての行で、それが行目に行ごとに異なるので、私はコードセクション –

関連する問題