awk

awk退出函数 exit

awk中使用shell变量

awk 'BEGIN{FS="\t"; OFS="\t"}{if($2 == "'$accession'"){print($2, $3); exit 0}}' nucl.accession2taxid.txt

遍历 fastq_pass 目录中的所有以 fastq 结尾的文件,然后提取到后面的数字编号,然后对其进行 +10000 的算术运算后再输出。

for i in `ls fastq_pass/*fastq`; do echo $i | awk 'BEGIN{FS="_"}{print $NF}' | awk 'BEGIN{FS="."}{print $1+10000}'; done

 以下代码实现了根据原文件名的编号来对应命名新文件名的功能

1. 遍历源路径,获取源文件名

2. 获取源文件中的数字编号,并进行一步数学运算,从而得到新文件的数字编号(这里为了演示采用了加法运算)

3. 将源文件复制到新文件,注意是一一对应的复制

for i in `ls fastq_pass/*fastq`
do 
    newName=`echo $i | awk 'BEGIN{FS="_"}{print $NF}' | awk 'BEGIN{FS="."}{print $1+10000}'`
    cp $i /home/leon/test/fastq_$newName.fastq
done

源文件

复制得到的新文件

修改时间戳的命令

for i in `ls fastq_*.fastq`; do num=`echo $i | awk 'BEGIN{FS="_"}{print $NF}' | awk 'BEGIN{FS="."}{print $1}'`; time=`head -n 1 $i | awk '{print $5}' | awk 'BEGIN{FS="="}{print $NF}'` ; touch -d "$time" $i; touch -d "$time" sequencing_summary_$num.txt; done
遍历fastq文件 从fastq的文件命中获取文件编号 从fastq文件的第一行中获取时间 将文件的时间戳修改为从文件中获取的时间

 打印相邻几列的 awk 命令

# 打印第四列到倒数第二列的内容
awk 'BEGIN{FS="\t"}{for (i=4;i<NF;i++) printf("%s ", $i); print ""}' fileName

awk内置函数 gsub

gsub(r,s) 在整个$0中用s替代r

gsub(r,s,t) 在整个t中用s替代r

# 当前记录通过正则表达式匹配 然后使用gsub()去掉@ 然后打印出第一个字段
awk '$0~/^@\w{8}-\w{4}-\w{4}-\w{4}-\w{12} runid=/ {gsub("^@", "", $1); print $1}' file.txt | less

 awk内置函数 sprintf

awk 'BEGIN{n_seq=0} /^>/ {
  if(n_seq%4000==0){
    file=sprintf("split%d.fa", n_seq/4000);  # awk 内置函数
  } 
  print >> file; 
  n_seq++; 
  next; 
}
{ 
  print >> file;
}' < fileName.txt

 将fasta文件线性化

awk '/^>/ {printf("%s%s\t",(N>0?"\n":""),$0);N++;next;} {printf("%s",$0);} END {printf("\n");}' < input.fa
cat Rmh.fasta | awk '{printf("%s%s",$0,((NR+1)%2==1?"\n":"\t"));}' | less -S
curl -s  "ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.fasta.gz" | gunzip -c | awk '/^>/ {printf("%s%s\t",(N>0?"\n":""),$0);N++;next;} {printf("%s",$0);} END {printf("\n");}'  | less -S
cat input.fasta | paste - - | less -S

将fastq文件线性化

cat Rmh.fastq | awk '{printf("%s%s",$0,((NR+1)%4==1?"\n":"\t"));}' | less -S
cat input.fastq | paste - - - - | less -S

 

posted on 2018-09-30 11:21  0820LL  阅读(158)  评论(0编辑  收藏  举报

导航