列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つの質問があります。
- cutを使用するのではなく、列19からgrepを起動する方法はありますか?または、grepに列を指定するオプションまたはパラメータはありますか?
- 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を使用してgrep
PCREサポートを使用してビルドすると、次のことができます。
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/'