访问手机版  

Linux常用命令|Linux培训学习|考试认证|工资待遇与招聘,认准超级网工!

招聘|合作 登陆|注册

网络工程师培训

当前位置:网络工程师 > 技术课程 > linux > 热点关注 > linux常用命令

Linux学习 - 常用和不太常用的实用awk命令

时间:2019-08-04

linux常用命令_常用linux命令大全_linux压缩命令zip命令

欢迎关注生信宝典:

Linux学习系列文章是生信宝典最开始主推的一块,力图从一个新额视角帮助初学者快速入门Linux系统,熟悉Linux下的文件和目录,文件操作, 文件内容操作。而且教程摒弃了完美操作,列举出,解惑Linux下多种信息输出方式。

在中简述了awk和sed的使用,作为一个引子。本篇则详细列举关于awk常用的操作和一些偏门的操作。

awk擅长于对文件按行操作,每次读取一行,然后进行相应的操作。

awk读取单个文件时的基本语法格式是awk 'BEGIN{OFS=FS="\t"}{print $0, $1;}' filename。

读取多个文件时的语法是awk 'BEGIN{OFS=FS="\t"}ARGIND==1{print $0, $1;}ARGIND==2{}' file1 file2。

linux常用命令_常用linux命令大全_linux压缩命令zip命令

awk后面的命令部分是用引号括起来的,可以单引号linux常用命令,可以双引号,但注意不能与内部命令中用到的引号相同,否则会导致最相邻的引号视为一组,引发解释错误。

OFS: 文件输出时的列分隔符 (output field separtor)

FS: 文件输入时的列分隔符 (field separtor)

BEGIN: 设置初始参数,初始化变量

END: 读完文件后做最终的处理

其它{}:循环读取文件的每一行

linux常用命令_常用linux命令大全_linux压缩命令zip命令

$0表示一行内容;$1, $2, … $NF表示第一列,第二列到最后一列。

column属性(当前字符位置的列号)和line属性(文件当前行号):在打开一个文件后,行和列指针都被设置为1。当前读:特殊的读操作,插入/更新/删除操作,属于当前读,需要加锁。低级文件i/omatlab低级文件i/o函数fclose 关闭文件feof 测试文件结束ferror 查询文件i/o的错误状态fgetl 读文件的行linux常用命令,忽略回行符fgets 读文件的行,包括回行符fopen 打开文件fprintf 把格式化数据写到文件或屏幕上fread 从文件中读二进制数据frewind 返回到文件开始fscanf 从文件中读格式化数据fseek 设置文件位置指示符ftell 获取文件位置指示符fwrite 把二进制数据写到文件里技术凝聚实力专业创新出版技术凝聚实力专业创新出版18.3.1 fopen函数? fopen函数打开一个文件并返回这个文件的文件句柄值。

a[$1]=1: 索引操作,类似于python中的字典,在ID map,统计中有很多应用。

ct@ehbio:~/sxbd$ cat ehbio.wig
variableStep chrom=chr2
300701  12.5
300702  12.5
300703  12.5
300704  12.5
300705  12.5
ct@ehbio:~/sxbd$ awk 'BEGIN{OFS=FS="\t"}{$2=$2*10^6/(2.5*10^6); print $0}' wig 
tep chrom=chr2  0
300701  4.4
300702  4.8
300703  4
300704  4.8
300705  4.8
ct@ehbio:~/sxbd$ cat count 
ID  Type
Pou5f1  Pluripotency
Nanog   Pluripotency
Sox2    Neuron
Tet1    Epigenetic
Tet3    Epigenetic
Myc Oncogene
ct@ehbio:~/sxbd$ awk 'BEGIN{OFS=FS="\t"}{if(FNR>1) a[$2]+=1;}END{print "Type\tCount"; for(i in a) print i,a[i];}' count
Type    Count
Neuron  1
Epigenetic  2
Oncogene    1
Pluripotency    2
# 这个也可以用下面方式代替,但不直接
ct@ehbio:~/sxbd$ tail -n +2 count | cut -f 2 | sort | uniq -c | sed -e 's/^  *//' -e 's/  */\t/' 
2   Epigenetic
1   Neuron
1   Oncogene
2   Pluripotency