특정 열의 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 전에 cut을 사용하고 싶지 않습니다. 이제 두 가지 질문이 있습니다.

  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/'

관련 정보