1.vi 多行注释与取消:
注释步骤:
-》“Esc”键->-》"Ctrl + v" -》-》 I -》-》
注释取消:
esc -》 Ctrl + v -》光标移动选定要取消注释的行 -》 按下“x”或者“d”
2.shell 变量嵌套
HG001=/ftp-trace.ncbi.nih.gov/giab/ftp/release/NA12878_HG001/latest/GRCh38/HG001_GRCh38_GIAB_highconf_CG-IllFB-IllGATKHC-Ion-10X-SOLID_CHROM1-X_v.3.3.2_highconf_PGandRTGphasetransfer.reheader.vcf.gz
HG002=/ftp-trace.ncbi.nih.gov/giab/ftp/release/AshkenazimTrio/HG002_NA24385_son/latest/GRCh38/HG002_GRCh38_GIAB_highconf_CG-Illfb-IllsentieonHC-Ion-10XsentieonHC-SOLIDgatkHC_CHROM1-22_v.3.3.2_highconf_triophased.reheader.vcf.gz
HG005=/ftp-trace.ncbi.nih.gov/giab/ftp/release/ChineseTrio/HG005_NA24631_son/latest/GRCh38/HG005_GRCh38_GIAB_highconf_CG-Illfb-IllsentieonHC-Ion-10XsentieonHC-SOLIDgatkHC_CHROM1-22_v.3.3.2_highconf.reheader.vcf.gz
...
想要把分析脚本批量生成,直接$${i} 是不行的,会报bad substitution的错误,可用eval echo '$'"${i}" ,如下:
for i in HG001 HG002 HG005 ; do
b=`eval echo '$'"${i}" `
echo "time $gatk GenotypeConcordance --CALL_VCF $vcf --TRUTH_VCF $b --CALL_SAMPLE $i --TRUTH_SAMPLE $i --IGNORE_FILTER_STATUS true --OUTPUT $name.$i.GenotypeCocordance && echo \" $i GenotypeCocordance done\" ">> $shell
done
3.行列置换
awk '{for(i=1;i<=NF;i=i+1){a[NR,i]=$i}}END{for(j=1;j<=NF;j++){str=a[1,j];for(i=2;i<=NR;i++){str=str " " a[i,j]}print str}}' test.txt
4.统计一列的和
awk '{sum += $1};END {print sum}'
5.插入
在首行前插入一行
# sed '1i\#!/bin/sh' aa.txt
在尾行前插入一行
# sed '$I\wait' aa.txt
在尾行后插入一样
# sed '$a\AAA' aa.txt
在首行后插入一行
# sed '1a\AAA' aa.txt
5.awk 传入变量
awk -v nm="sample_id" '$1==nm' file | less