美文网首页linux&github
Linux文本处理三剑客之awk

Linux文本处理三剑客之awk

作者: R语言数据分析指南 | 来源:发表于2020-04-12 17:59 被阅读0次

awk 基本语法

#awk 读取单个文件
awk 'BEGIN{OFS=FS="\t"}{print $0, $1;}' filename
#awk 读取多个文件
awk 'BEGIN{OFS=FS="\t"}ARGIND==1{print $0, $1;}ARGIND==2{print $0;}' file1 file2
sed '3,10d' 1.txt  #删除3至10行
awk '!(NR>=3 && NR<=10)' 1.txt
awk 'NR<3 ||NR>10' 1.txt
awk 'NR==3;NR==10' 1.txt #取出第3行,第10行
||   #代表或
! #代表取反
OFS  #文件输出时的列分割符
FS  #文件输入时的列分割符
BEGIN #设置初始参数,初始化变量
END #文件读完后的操作
{} #循环读取文件每一行
$0 #表示一行内容 
$1 $2 $N #表示列   
N #最后一列
NF #列号    NR #行号
FNR #当前文件读了多少行,常用于多文件操作
a[$1]=1  #索引操作,类似python 中的字典
#判断 FASTQ 文件中,输出质量值的长度是与序列长度不一致的序列 ID
awk '{if(FNR%4==1) ID=$0; else if(FNR%4==2) seq_len=length($0); \
else if(FNR%4==0) {quality_len=length($0); if(seq_len!=quality_len) print ID; }}'
awk '{print $1,$2}' 1.fasta  #打印第一列,第四列 
awk '{print $1 "\t"$2}' 1.fasta  #制表符分割使文本对齐 
awk '{print NR "\t" $1 "\t" $2}' 1.fasta     
awk '{print NR "\t" $0}' 1.fasta       #$0全部打印
awk 'NR==7{print NR "\t" $0}' 1.fasta    #打印第7行
awk '{$3="xxxxx"; print $0}' 1.fasta #第3列用xxxx显示
awk '{print NF "\t" $0}' 1.fasta      #NF显示每一行有多少列
awk '{print $NF}' 1.fasta #打印最后一列 print$(NF-1) 倒数第二
awk '$3==0 && $6=="123"' 1.fastq  #根据条件过滤
awk '$3==0' 1.fasta     #过滤第3列等于0的
awk '$3=="ATCG"' 1.fasta   #数字对字符串注意加""
awk 'BEGIN{OFS=","} print( $1,$2)   #设置输出分割符为,
awk '{print NR, FILENAME, $0}' 1.txt 2.txt     
#合并2个文件,并显示行号与文件名称
awk -F : '/^root/{pritn $7}' 1.fasta   
# -F 指定切割符号,^root匹配以root开头的行,打印第7列
awk -F : '/^root/{pritn $1","$7}' 1.fasta       
#输出第1列和第7列;并且2列之间用,分割
awk -F : 'BEGIN {pritn "ATCGATCGGCT"} {pritn $1","$7} END {print "CGCCGCTGG"}' 1.fasta 
#在文件内容前后添加新的内容,输出第1列和第7列;并且2列之间用,分割
awk -F : '{print FILENAME"," NR"," NF}' 1.fasta 
#统计一个文件的每一行的行号,并统计列数(NR行号 NF列号)
grep |awk    
#grep 过滤,awk 切割  
awk '/^$/ {print NR}' 1.fasta   
#查询空行所在的行号
#正则表达式语法
\    \n   \\\\匹配\ , \\( 匹配(
^   开头
$ 结尾
计算列的和
n+=2   即n=n+2
cat 1.txt |awk -F" " '{sum+=$2} END {print sum}'
#正则表达式   /   / 
awk '/abc/{print $0}' 1.txt
a/c  用 /a\/c/匹配  \/转译符号
a\c      /a\\c/
a?c     /a\?c/
#序列提取
awk 'BEGIN{OFS="\t"}ARGIND==1{if($0~/>/) {name=$0; 
sub(">","",name); seq[name]=$0;} else seq[name]=seq[name]"\n"$0; }
ARGIND==2{print seq[$0];}' 1.fa csd.txt

相关文章

  • awk

    awk的简介和功能 awk: Linux 文本处理三剑客:grep、sed和awk。其中grep是一种文本过滤工具...

  • Linux-grep、sed、awk之awk命令

    参考:Linux三剑客(grep sed awk) 之 awk[https://www.jianshu.com/p...

  • Linux系统中awk和sed有什么区别?

    Linux文本三剑客,即awk、grep、sed,这三个命令是Linux中常用的文本处理命令,主要作用是对文本内容...

  • grep常用选项

    grep是Linux中最常用的文本处理工具之一,与sed,awk合称Linux中的三剑客。grep的全称是:Glo...

  • sed介绍

    sed是什么 sed是linux文本处理工具三剑客(grep,sed,awk)之一,用来处理文本的流编辑工具。主要...

  • 文本三剑客awk

    文本处理三剑客3-Awk awk的用户使用指南[http://www.gnu.org/software/gawk/...

  • AWK

    Linux文本处理工具三剑客: grep:文本过滤器 sed:流编辑器 awk:报告生成器(格式化以后,显示) a...

  • day 15

    Linux三剑客之awk 1.1、awk语法及参数 功能说明: awk是一种编程语言,可以用来处理数据和生成报...

  • Linux三剑客

    Linux三剑客 标签(空格分隔): Linux grep sed awk [TOC] 在Linux系统当中,处理...

  • Linux 文本处理三剑客:grep、sed 和 awk

    [TOC] awk、grep、sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之...

网友评论

    本文标题:Linux文本处理三剑客之awk

    本文链接:https://www.haomeiwen.com/subject/dqjbmhtx.html