123列的值输出第多个文件的123列(新染色体,ampl2…)存入一二三列(旧染色体

把当前文件夹的文本名用”,”连接成一行,只怕将多行转变为一行

ls | paste -s -d ","  # -s 选项将输入进行一次性粘贴
ls | xargs | sed 's/ /,/g'  #xargs 将输入作为参数(空格分隔)传入
ls | awk '{printf "%s,",$0}'

把如今文件夹的文本名用”,”连接成一行,大概将多行转变为一行

ls | paste -s -d ","  # -s 选项将输入进行一次性粘贴
ls | xargs | sed 's/ /,/g'  #xargs 将输入作为参数(空格分隔)传入
ls | awk '{printf "%s,",$0}'

本次讲awk 的数组及使用

将行逆序输出

sed '1!G;h;$!d'file  # 1!G 第一行不执行G命令,从第二行开始执行;$!d 最后一行不删除;第一行自动存入模式空间,将模式空间内容(第一行)放到保持空间(h),然后删除模式空间内容(d,否则它会自动输出),第二行自动存入模式空间,(开始用G)将保持空间(第一行内容)接到模式空间(第二行)后,将当前模式空间(第二行+第一行)放到保持空间(h),然后删除当前模式空间(d),依次类推,最后一行不删除模式空间,再自动输出模式空间内容
tac file

将行逆序输出

sed '1!G;h;$!d'file  # 1!G 第一行不执行G命令,从第二行开始执行;$!d 最后一行不删除;第一行自动存入模式空间,将模式空间内容(第一行)放到保持空间(h),然后删除模式空间内容(d,否则它会自动输出),第二行自动存入模式空间,(开始用G)将保持空间(第一行内容)接到模式空间(第二行)后,将当前模式空间(第二行+第一行)放到保持空间(h),然后删除当前模式空间(d),依次类推,最后一行不删除模式空间,再自动输出模式空间内容
tac file

awk 中数组叫做关联数组(associative
arrays),因为下标能够是数字也足以是字符串。awk
中的数组不必提前注脚,也不要注解大小,直接赋值就行。

删除#发端的注释行

sed '/^#.*/d' test.txt

删除#起头的注释行

sed '/^#.*/d' test.txt
# 可以用数值作数组索引(下标)
Tarray[1]=“cheng mo”
Tarray[2]=“800927”

# 可以用字符串作数组索引(下标)
Tarray[“first”]=“cheng ”
Tarray[“last”]=”mo”
Tarray[“birth”]=”800927”
# 也可以这样:
Tarray[“first”\t"last"]=”chengmo”

去掉每行初始5个字符

cut -c 4- test.csv

去掉每行伊始四个字符

cut -c 4- test.csv
要么先创设bed文件:
# 使用 randomBed创建bed文件:
randomBed -seed 2 -n 1000 -l 400 -g ./hg19.chrom_24.sizes >./a.bed
# 查看前10行:
head a.bed

图片 1

对文本首先列举办总结

awk -F "," '{count[$1]++} END{for (record in count) print record,count[record] }' test.csv  #count[$1]++创建关联数组count[$1]并进行计数

对文本首先列举行总计

awk -F "," '{count[$1]++} END{for (record in count) print record,count[record] }' test.csv  #count[$1]++创建关联数组count[$1]并进行计数
本条bed文件显示的第5列是行号排序,未来大家想将它替换为相应的染色体的尺寸,比如chr1的尺寸是249250621,chr2的长短是243199573,这么些消息是在hg19.chrom_24.sizes以此文件里有个别:
# 查看hg19.chrom_24.sizes
cat hg19.chrom_24.sizes

图片 2

对文本第五列用”:”切割成两列并将最终一列结果+1,然后输出全体列

awk -F "," '{split($4,array,":");print $1,$2,$3,array[1],array[2]+1}' test.csv  #split切割$4存到数组array中,array[1]和arrya[2]即为切割后的两个区域

对文本第5列用”:”切割成两列并将最终一列结果+1,然后输出全体列

awk -F "," '{split($4,array,":");print $1,$2,$3,array[1],array[2]+1}' test.csv  #split切割$4存到数组array中,array[1]和arrya[2]即为切割后的两个区域
轮换后的结果应该是其一样子的:

图片 3

对文件第壹列求均值

awk -F "," '{sum+=$2} END {print "Average = ", sum/NR}' test.csv

对文本第②列求均值

awk -F "," '{sum+=$2} END {print "Average = ", sum/NR}' test.csv
第伍列已经替换为了呼应染色体长度。

福寿绵绵DNA连串反向互补

cat seq.txt | sed 'y/ATGC/TACG/' |rev

兑现DNA系列反向互补

cat seq.txt | sed 'y/ATGC/TACG/' |rev
代码及注释如下:
awk 'BEGIN{OFS="\t"}{
    # 在按行读第一个文件时将第二列数据存储到以第一列染色体名为下标的数组a里:
    if(NR==FNR){
        a[$1]=$2
        }
    # 读第二个文件,注意其中的a[$1]已经是a.bed中的$1.
    if(NR>FNR){
        print $1,$2,$3,a[$1],$5,$6
        }
    }' hg19.chrom_24.sizes a.bed >b.bed

某一行插入其余1个文件的内容

sed '2 r a.txt' test.csv 

某一行插入别的2个文本的始末

sed '2 r a.txt' test.csv 
还足以因而length函数得到数高管度,但awk有好多少个版本,用的可比多的时gawk,在行使函数以及awk内置变量时应有安转gawk:
sudo apt-get install gawk
awk '{a[$1];print "当前数组长度为:",length(a)}' hg19.chrom_24.sizes

图片 4

乘机读取行数大增,数COO度也在加码。


更多原创美丽内容敬请关心生信诗歌

图片 5

对二个文本依照第③列实行筛选,筛选标准是必须在其它3个文件的率先列出现过

awk -F "," '{if(NR==FNR){count[$1]=1}else if(count[$1]==1){print $0}}' chr.txt test.csv  #将第一个文件第一列的值存入关联数组,并给值为1,如果第二个文件建立的关联数组对应值为1,说明在第一个文件第一列出现过,则输出整行

对二个文书依照第①列实行筛选,筛选标准是必须在其余二个文本的第②列出现过

awk -F "," '{if(NR==FNR){count[$1]=1}else if(count[$1]==1){print $0}}' chr.txt test.csv  #将第一个文件第一列的值存入关联数组,并给值为1,如果第二个文件建立的关联数组对应值为1,说明在第一个文件第一列出现过,则输出整行

对文件第叁列和第2列举办实行

拓展前四列
图片 6
进行后成为三列
图片 7

awk -F "," '{for (i=$2;i<=$3;i++) {print $1,i,$4}}'  test.csv 

对文本第①列和第壹列实行举办

举行前四列
图片 8
进展后化作三列
图片 9

awk -F "," '{for (i=$2;i<=$3;i++) {print $1,i,$4}}'  test.csv 

对多少个文本相继merge

  那里八个公文行数相等,在那之中ampl列将新的和旧的染色体、地方关系起来,第3个文本将第6列(ampl列,值为ampl1,ampl2…)存入一二三列(旧染色体,旧初始地点,旧结束地点)为下标的关联数组ampl,第贰个文件依照一二三列(旧染色体,旧初始地点,旧截止地点)取出关联数组的值(ampl1,ampl2…),将涉嫌数组的值作为涉及数组下标新成立关联数组Ampl,将第③个文本的值(1,2,3,4,5列,个中④ 、5列是我们要的新闻)用sprintf生成字符串存入Ampl,第2文件按照第肆列(ampl1,ampl2…),用split切割sprintf生成的字符串,取出第①个公文存入的值(那里只取出了特殊必要的4,5列,123列的值输出第多少个文件的123列(新染色体,新开局地点,新得了地点)的值)。那样Oldpanel_start_end.sort.bed
对应的旧的染色体和地方,被hg38amplicon_start_end.bed新的3个染色体和地点取代,并且将旧文件染色体和岗位在amplGChg19.txt
对应的信息成功转移到新生成的新职分文件中

awk 'BEGIN{FS="\t";OFS="\t"}{if(NR==FNR){ampl[$1,$2,$3]=$5;N=NR}else if(NR<=2*N){Ampl[ampl[$1,$2,$3]]=sprintf("%s,%d,%d,%s,%s",$1,$2,$3,$4,$5);}else{split(Ampl[$4],array,",");print $1,$2,$3,array[4],array[5],$4}}' Oldpanel_start_end.sort.bed amplGChg19.txt hg38amplicon_start_end.bed | sort -k1 > hg38amplicon_Gene_GC.txt

对多个文本相继merge

  那里多个文本行数相等,个中ampl列将新的和旧的染色体、地方关系起来,第①个文件将第⑤列(ampl列,值为ampl1,ampl2…)存入一二三列(旧染色体,旧起首地方,旧甘休地点)为下标的关联数组ampl,第③个文件遵照一二三列(旧染色体,旧起始地点,旧甘休地方)取出关联数组的值(ampl1,ampl2…),将关全面组的值作为关乎数组下标新成立关联数组Ampl,将第三个文件的值(1,2,3,4,5列,个中四 、5列是大家要的音信)用sprintf生成字符串存入Ampl,第①文本依照第④列(ampl1,ampl2…),用split切割sprintf生成的字符串,取出第③个文本存入的值(那里只取出了亟需的4,5列,123列的值输出第三个文件的123列(新染色体,新起第二地方,新告竣地点)的值)。那样Oldpanel_start_end.sort.bed
对应的旧的染色体和职位,被hg38amplicon_start_end.bed新的3个染色体和职位取代,并且将旧文件染色体和职位在amplGChg19.txt
对应的新闻成功转移到新生成的新岗位文件中

awk 'BEGIN{FS="\t";OFS="\t"}{if(NR==FNR){ampl[$1,$2,$3]=$5;N=NR}else if(NR<=2*N){Ampl[ampl[$1,$2,$3]]=sprintf("%s,%d,%d,%s,%s",$1,$2,$3,$4,$5);}else{split(Ampl[$4],array,",");print $1,$2,$3,array[4],array[5],$4}}' Oldpanel_start_end.sort.bed amplGChg19.txt hg38amplicon_start_end.bed | sort -k1 > hg38amplicon_Gene_GC.txt

对多少个文件去重取并集

cat NewpanelGene.bed Oldpanel.gene.bed | sort -u > merge.gene.bed  #sort -u = sort | uniq ,相当于sort 之后,将重复相邻行变成只有一行

对三个公文去重取并集

cat NewpanelGene.bed Oldpanel.gene.bed | sort -u > merge.gene.bed  #sort -u = sort | uniq ,相当于sort 之后,将重复相邻行变成只有一行

对文件根据标志起初的行开始展览分割

比如
图片 10

 awk '/>chr/{split($0,array,">");out=array[2]};{print > out}' test.fa

出口chr1,chr2五个文本

对文本遵照标志初阶的行举办私分

比如
图片 11

 awk '/>chr/{split($0,array,">");out=array[2]};{print > out}' test.fa

出口chr1,chr2三个文件

出口文件奇数行和偶数行

sed -n 'p;n' test.txt #输出奇数行
sed -n 'n;p' test.txt #输出偶数行

出口文件奇数行和偶数行

sed -n 'p;n' test.txt #输出奇数行
sed -n 'n;p' test.txt #输出偶数行

统计GC含量

echo "TTCCTTGAAATAAGTGTGATT" | awk '{s=gsub("[GC]","N",$0);print s/length}'

统计GC含量

echo "TTCCTTGAAATAAGTGTGATT" | awk '{s=gsub("[GC]","N",$0);print s/length}'

去除windows换行符

cat test.txt | sed 's/\r//g' 

相关文章