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