2017-10-02 2 views
0

私はによって最初の二つに成功したので、awk複数のフィールドセパレータ?

chr1 HAVANA gene 11869 14409 .  +  .  gene_id "ENSG00000223972.5"; gene_type "transcribed_unprocessed_pseudogene"; gene_name "DDX11L1"; level 2; havana_gene "OTTHUMG00000000961.2"; 

私はENSG00000223972.5を抽出するような行を持つ大規模なファイルを持っているDDX11L1、CHR 1、11869および14409. :

awk 'BEGIN {FS="\""}; {print $2"\t"$6}' file.txt 

私はchr1、11869、および14409を抽出するのに苦労しています。これは、別のfeildセパレータが必要なのでしょうか?これはどのように同じで行われますか?

答えて

1

てみてください、あなたが望むものを抽出するために、次のコマンドを使用するには、

awk 'BEGIN {FS="\"";OFS="\t"}; {split($1,a,/[\ ]*/); print a[1],a[4],a[5],$2,$6}' file.txt 

簡単な説明、

  • split($1,a,/[\ ]*/:配列a$1を分割し、セパレータは/[\ ]*/
  • はRegexされるだろうaに保存されている分割コンテンツを必要に応じて印刷します。
1
$ awk -F'[ "]+' -v OFS='\t' '{print $1, $4, $5, $10, $16}' file 
chr1 11869 14409 ENSG00000223972.5  DDX11L1 
関連する問題