特定の列のGREP大文字、結果を新しい列と同じファイルにパイプ

特定の列のGREP大文字、結果を新しい列と同じファイルにパイプ

列19には、次のタブで区切られた複数列ファイルがあります。

gaA
gGg
Att
gtC
gGa
gcC
ccG
cTc
.
.
.
and so on

私は大文字だけを探したかったので、以下を使用しました。

cut -f19 1.table | grep -e '[[:upper:]]' -o

出力は次のとおりです

A
G
A
C
G
C
G
T
.
.
.
and so on

しかし、grepの前にカットを使用したくありません。今、2つの質問があります。

  1. cutを使用するのではなく、列19からgrepを起動する方法はありますか?または、grepに列を指定するオプションまたはパラメータはありますか?
  2. grep結果出力を1.tableファイルに新しい列に入れたいですか?それとも、grepの結果出力を1.tableファイルの新しい列(列20など)にパイプするにはどうすればよいですか?

以下は1.tableへの入力行です(1.tableにもヘッダーがあります)。

#CHROM  POS ID  REF ALT QUAL    AC  AN  AF  DP  ExonicFunc.refGene  Func.refGene    AAChange.refGene    Gene.refGene    GeneDetail.refGene  GENEINFO    EFF refcodon            ExAC_AFR    ExAC_ALL    ExAC_AMR    ExAC_EAS    ExAC_FIN    ExAC_NFE    ExAC_OTH    ExAC_SAS    gnomAD_exome_AFR    gnomAD_exome_ALL    gnomAD_exome_AMR    gnomAD_exome_ASJ    gnomAD_exome_EAS    gnomAD_exome_FIN    gnomAD_exome_NFE    gnomAD_exome_OTH    gnomAD_exome_SAS    gnomAD_genome_AFR   gnomAD_genome_ALL   gnomAD_genome_AMR   gnomAD_genome_ASJ   gnomAD_genome_EAS   gnomAD_genome_FIN   gnomAD_genome_NFE   gnomAD_genome_OTH   1000g2015aug_all    esp6500siv2_all CADD_phred  CADD_raw    CADD_raw_rankscore  CAF DANN_rankscore  DANN_score  Eigen   Eigen-PC-raw    Eigen-raw   Eigen_coding_or_noncoding   FATHMM_coding   FATHMM_converted_rankscore  FATHMM_noncoding    FATHMM_pred FATHMM_score    FS  GTEx_V6_gene    GTEx_V6_tissue  GWAVA_region_scoreGWAVA_tss_score   GWAVA_unmatched_score   GenoCanyon_score    GenoCanyon_score_rankscore  Interpro_domain LRT_converted_rankscore LRT_pred    LRT_score   MetaLR_pred MetaLR_rankscore    MetaLR_score    MetaSVM_pred    MetaSVM_rankscore   MetaSVM_score   MutationAssessor_pred   MutationAssessor_score  MutationAssessor_score_rankscore    MutationTaster_converted_rankscore  MutationTaster_pred MutationTaster_score    PROVEAN_converted_rankscore PROVEAN_pred    PROVEAN_score   Polyphen2_HDIV_pred Polyphen2_HDIV_rankscore    Polyphen2_HDIV_score    Polyphen2_HVAR_pred Polyphen2_HVAR_rankscore    Polyphen2_HVAR_score    QD  SIFT_converted_rankscore    SIFT_pred   SIFT_score  SiPhy_29way_logOdds SiPhy_29way_logOdds_rankscore   VC  VEST3_rankscore VEST3_score WGT avsnp147=rs28410799 integrated_confidence_value integrated_fitCons_score    integrated_fitCons_score_rankscorephastCons100way_vertebrate    phastCons100way_vertebrate_rankscore    phastCons20way_mammalian    phastCons20way_mammalian_rankscorephyloP100way_vertebrate   phyloP100way_vertebrate_rankscore   phyloP20way_mammalian   phyloP20way_mammalian_rankscore CLINSIG CLNACC  CLNDBN  CLNDSDB CLNDSDBID   GT  AD  DP  GQ  PL  GT  AD  DP  GQ  PL  GT  AD  DP  GQPL    
chr1    13115765    rs141111983 C   T   2280.92 3   6   0.5 153 synonymous_SNV  exonic  HNRNPCL2:NM_001136561:exon2:c.G636A:p.E212E HNRNPCL2    0   HNRNPCL2:440563 SYNONYMOUS_CODING(LOW|SILENT|gaG/gaA|E212|293|HNRNPCL2|protein_coding|CODING|ENST00000621994|2|T),NEXT_PROT[coiled-coil_region](LOW||||293|HNRNPCL2|protein_coding|CODING||2|T),INTRON(MODIFIER||||478|WI2-3308P17.2|protein_coding|CODING|ENST00000622351|1|T),INTRON(MODIFIER||||478|PRAMEF26|protein_coding|CODING|ENST00000621259|4|T)  gaG gaA E212    0.4772  0.4933  0.4993  0.497   0.5 0.4918  0.4967  0.4996  0.4846  0.4959  0.4998  0.4969  0.499   0.4999  0.4939  0.4969  0.4998  0.4939  0.4125  0.4867  0.1888  0.4981  0.4997  0.3321  0.4604  0   0   0   0   0   0   0   0-0.3847    -0.3847-PC-raw  -0.3847-raw 0   0.02308 0   0.87915 0   0   18.131  0   0   0.43    0.23    182 000 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   000 0   0   0   0   0   14.91   0   0   0   0   0   SNV 0   0   1   rs141111983=rs28410799  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0B00H7EW=0/1    38,18   56  99  722,0,1577  B00H7EX=0/1 31,29   60  99  1166,0,1211 B00H7EY=0/1 26,11   3799    423,0,1098  
chr1    13115766    rs150951326 T   C   2325.92 3   6   0.5 155 nonsynonymous_SNV   exonic  HNRNPCL2:NM_001136561:exon2:c.A635G:p.E212G HNRNPCL2    0   HNRNPCL2:440563 NON_SYNONYMOUS_CODING(MODERATE|MISSENSE|gAg/gGg|E212G|293|HNRNPCL2|protein_coding|CODING|ENST00000621994|2|C),NEXT_PROT[coiled-coil_region](LOW||||293|HNRNPCL2|protein_coding|CODING||2|C),INTRON(MODIFIER||||478|WI2-3308P17.2|protein_coding|CODING|ENST00000622351|1|C),INTRON(MODIFIER||||478|PRAMEF26|protein_coding|CODING|ENST00000621259|4|C)  gAg gGg E212G   0.4775  0.4934  0.4993  0.4972  0.5 0.4919  0.4967  0.4996  0.4851  0.496   0.4998  0.4969  0.4991  0.4999  0.494   0.4969  0.4998  0.494   0.4127  0.4867  0.1875  0.4981  0.4997  0.3323  0.4603  0   0   0.286   -0.453  0.058   0   0.019   0.324   -0.4897 -0.4897-PC-raw  -0.4897-raw n   0.01015 0   0.80402 0   0   22.504  0   00.43   0.23    182 0   0.029   0   0   0   0   0   0   0   0   0   0   0   0   000 0   0   0   0   B   0.026   0   B   0.013   0   15.01   0   0   0   0   0   SNV 0.089   0.091   1   rs150951326=rs28410799  0   0.075   0.013   0.947   0.327   0.005   0.09    -0.854  0.044   -0.972  0.023   0   0   0   0   0   B00H7EW=0/1 38,19   57  99  764,0,1574  B00H7EX=0/1 31,30   61  991166,0,1211   B00H7EY=0/1 26,11   37  99  426,0,1056  
chr1    13392320    rs767291041 C   A   96.12   1   4   0.25    10  nonsynonymous_SNV   exonic  PRAMEF16:NM_001045480:exon3:c.C1243A:p.P415T,PRAMEF17:NM_001099851:exon3:c.C1243A:p.P415T   PRAMEF16,PRAMEF17   0   PRAMEF17:391004 NON_SYNONYMOUS_CODING(MODERATE|MISSENSE|Cct/Act|P415T|474|PRAMEF17|protein_coding|CODING|ENST00000376098|3|A)   Cct Act P415T   0   0.001   0   0   0   0.002   0   0   0   0.0006  0.0016  0   0   0   0.0009  0.0008  0   0   0.0002  0   0   0   0   0.0007  0   0   0   0   0   0   0   0   0   -0.1177 -0.1177-PC-raw  -0.1177-raw 0   0.02548 0   0.24739 0   0   0   0   0   0   0   0   0   0   000 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   000 0   0   0   10.68   0   0   0   0   0   SNV 0   0   1   rs782058522=rs28410799  000 0   0   0   0   0   0   0   0   0   0   0   0   0   B00H7EW=0/1 4,5 999 123,0,100   B00H7EX=0/0 1,0 1   3   0,3,30  B00H7EY=./. 0,0 0   0   0,0,0   
chr1    13392320    rs767291041 C   A   70.13   1   6   0.167   37  nonsynonymous_SNV   exonic  PRAMEF17:NM_001099851:exon3:c.C1243A:p.P415T    PRAMEF17    0   PRAMEF17:391004 NON_SYNONYMOUS_CODING(MODERATE|MISSENSE|Cct/Act|P415T|474|PRAMEF17|protein_coding|CODING|ENST00000376098|3|A)   Cct Act P415T   0.0048  0.0006  0   0   0   0   0   00.0002 0.0005  0.0009  0   0   0   0.0007  0.0006  0   0   0.0002  0   0   0   0   0.0004  0   0022.7  3.18    0.442   0   0.453   0.988   -0.1208 -0.1208-PC-raw  -0.1208-raw c   0.0207  0.12    0.11274 T   2.72    000 0   0   0   0   0.061   0   0.843   D   0   T   0.356   0.094   T   0.045   -1.097  H   3.83    0.957   0.09    N   1   0.954   D   -7.63   D   0.899   1   D   0.875   0.998   11.69   0.784   D   0.001   5.599   0.165   SNV 0.353   0.293   1   rs767291041=rs28410799  0   0.487   0.133   0.019   0.194   0.031   0.148   1.655   0.367   0.621   0.289   0   0   0   0   0   B00H7EW=0/1 3,3 6   94  101,0,94    B00H7EX=0/0 13,0    13  39  0,39,442    B00H7EY=0/0 18,0    18  48  0,48,720

答え1

列を指定するためにgrepにオプションまたはパラメータがありますか?

grepいいえフィールド区切り記号オプション。
以下を使用してくださいアッ反対のアプローチ:

awk -F'\t' -v OFS='\t' '{match($19,/[A-Z]+/); $20=substr($19,RSTART,RLENGTH) FS $20}1' 1.table

match($19,/[A-Z]+/)- フィールド19で大文字をキャプチャ

$20=substr($19,RSTART,RLENGTH) FS $20- 一致する大文字を抽出します。19番目のフィールドを次のように挿入します。20最初のフィールド値

答え2

これを行う方法について文字通りの質問に答えるにはgrep ホロgrepこれを行うようには設計されていませんが、GNUを使用してgrepPCREサポートを使用してビルドすると、次のことができます。

grep -Po '(?:^(?:[^\t]*\t){18}|\G)[^\t]*?\K[[:upper:]]'

<not-TABs><tab>つまり、行の先頭または前の一致の最後で18個のシーケンス()を検索し、\Gその後にタブ以外の文字ができるだけ少なく(したがって、まだ19番目のフィールドにある)、大文字が続きます。\K私たちはリセットマッチ大文字の前半です。

したがって、次のような入力のために:

X<tab>X<tab>....<tab>AbC<tab>X<tab>...

次のように報告されます。

A
C

あなたがする方法と同じですcut | grep

フィールド19の最初の大文字にのみ興味がある場合は、これを次のように単純化できます。

grep -Po '^(?:[^\t]*\t){18}[^\t]*?\K[[:upper:]]'

20番目に入れてください、次のようにすることができます。

paste <(cut -f1-19 < file) <(grep ...above < file) <(cut -f20- < file) > newfile

または最後の列として挿入します。

grep... < file | paste file - > newfile

答え3

君とsed出来る

sed '/^#/!s/\([^ ]* *\)\{18\}[a-z]*\([A-Z]\).*/&  \2/'

つまり、#/^#/!セレクタ)で始まらないすべての行について、18個の空白ではなく空白を組み合わせた後に参照できるように大文字を表示し、行全体\(\)自体を見つかった大文字に「置き換えます」。手紙にスペースを追加します。

拡張正規表現を好む場合は、次を使用することもできます。

sed -E '/^#/!s/([^ ]* *){18}[a-z]*([A-Z]).*/&  \2/'

列が空白ではなくタブで区切られている場合に機能します。

sed -E '/^#/!s/([^\t]*\t){18}[a-z]*([A-Z]).*/&\t\2/'

関連情報