美文网首页Linux
linux || awk(3)

linux || awk(3)

作者: 溪溪溪溪溪川 | 来源:发表于2019-03-31 20:46 被阅读45次

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

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

' ' 引用代码块
BEGIN 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
// 匹配代码块,可以是字符串或正则表达式
{} 命令代码块,包含一条或多条命令,循环读取文件的每一行
; 多条命令使用分号分隔

END 结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
a[$1]=1: 索引操作,类似于python中的字典,在ID map,统计中有很多应用。

-F 指定一个或者多个分隔符

多个分隔符 -F "[=\t]"或-F'[=\t]' 定义三个分隔符两个分隔符之间不需要分开
一个分隔符 -F:或者-F ":"
一个或多个连续的空格或制表符看做一个定界符,即多个空格看做一个空格

pengzw@super-server:~/reference/At$ awk -F "[=\t]" '$3 == "gene" {print$1"\t"$11"\t"$4"\t"$5}' Athaliana_167_TAIR10.gene.gff3|head -n 10
Chr1    AT1G01010   3631    5899
Chr1    AT1G01020   5928    8737
Chr1    AT1G01030   11649   13714
Chr1    AT1G01040   23146   31227
Chr1    AT1G01050   31170   33153
Chr1    AT1G01060   33379   37871
Chr1    AT1G01070   38752   40944
Chr1    AT1G01073   44677   44787
Chr1    AT1G01080   45296   47019
Chr1    AT1G01090   47485   49286

FS="[" ":]+" 以一个或多个空格或:分隔 ,+表示多个

[root@Gin scripts]# cat hello.txt
root:x:0:0:root:/root:/bin/bash
[root@Gin scripts]# awk -F [" ":]+ '{print $1,$2,$3}' hello.txt
root x 0

还有常用字符串函数等。

-f 指定脚本文件

awk -f script.awk file
BEGIN{
FS=":"
}
{print $1}
//效果与awk -F":" '{print $1}'相同,只是分隔符使用FS在代码自身中指定

IF语句

必须用在{}中,且比较内容用()扩起来
awk -F: '{if($1~/mail/) print $1}' /etc/passwd //简写
awk -F: '{if($1~/mail/) {print $1}}' /etc/passwd //全写
awk -F: '{if($1~/mail/) {print $1} else {print $2}}' /etc/passwd //if...else...

相关文章

  • Linux

    linux awk命令详解、linux awk命令Linux常用操作指令Linux netstat命令详解 awk...

  • linux || awk(3)

    awk基本参数解释 awk擅长于对文件按行操作,每次读取一行,然后进行相应的操作。读取单个文件时的基本语法格式是 ...

  • awk

    Linux System Environment awk功能 awk格式 awk 参数 一、awk截取列 二、显示...

  • Linux 学习笔记(十四):Linux 正则表达式基础

    grep 命令 作为linux中最为常用的三大文本(awk(Linux awk教程),sed(Linux sed教...

  • Linux | awk

    参考:http://www.runoob.com/linux/linux-comm-awk.html awk命令的...

  • linux-awk

    linux-awk awk基本结构 awk ‘BEGIN{ print “start”} pattern { co...

  • awk命令

    下文来自:美团 吴孟达更多AWK命令请参考:Linux awk 命令扩展:linux sort,uniq,cut,...

  • Linux Shell Awk 流程控制语句详细介绍

    Linux Shell Awk 流程控制语句详细介绍 在linux awk的 while、do-while和for...

  • Linux Shell:awk文本处理工具,Linux的SQL神

    摘要:Linux,Shell,awk awk简介 awk是一个强大的文本分析工具,尤其是对linux中的结构化二维...

  • linux三剑客awk教你如何裁剪结果集

    awk awk在Linux中我们称之为输出。在Linux的终端上所有的东西我们都可以用awk来输出赋值。 首先我们...

网友评论

    本文标题:linux || awk(3)

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