美文网首页
linux || awk(1)

linux || awk(1)

作者: 溪溪溪溪溪川 | 来源:发表于2019-03-25 22:09 被阅读0次

awk学习

AWK其名得自于三位创始人 Alfred Aho,Peter Weinberger和 Brian Kernighan 的 Family Name 的首字符。
AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

使用方法
awk [options] 'Pattern{Action}' file
awk [options] -f scriptfile var=value file(s)

其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。

选项参数说明:
-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F,默认域分隔符:空格或Tab。
-v var=value or --asign var=value
赋值一个用户定义变量。
-f scripfile or --file scriptfile
从脚本文件中读取awk命令。
运算符
运算符 描述
= += -= *= /= %= ^= **= 赋值
? C条件表达式
逻辑运算符
|| 逻辑或
&& 逻辑与
正则运算符号
~ ~! 匹配正则表达式和不匹配正则表达式
关系运算符号
< <= > >= != == 关系运算符
算数运算符
+ - 加,减
* / % 乘,除与求余
+ - ! 一元加,减和逻辑非
^ *** 求幂
++ -- 增加或减少,作为前缀或后缀
其他运算符
空格 字符串连接符
$ 字段引用
?: 三目运算符
in 数组成员 数组中是否存在某键值
内置变量
变量 描述
$n 当前记录的第n个字段,字段间由FS分隔,$n表示第n个域
$0 完整的输入记录,$0则表示所有域
ARGC 命令行参数的数目
ARGIND 命令行中当前文件的位置(从0开始算)
ARGV 包含命令行参数的数组
CONVFMT 数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组
ERRNO 最后一个系统错误的描述
FIELDWIDTHS 字段宽度列表(用空格键分隔)
FILENAME 当前文件名
FNR 各文件分别计数的行号
FS 字段分隔符(默认是任何空格)
IGNORECASE 如果为真,则进行忽略大小写的匹配
NF 一条记录的字段的数目
NR 已经读出的记录数,就是行号,从1开始
OFMT 数字的输出格式(默认值是%.6g)
OFS 输出记录分隔符(输出换行符),输出时用指定的符号代替换行符
ORS 输出记录分隔符(默认值是一个换行符)
RLENGTH 由match函数所匹配的字符串的长度
RS 记录分隔符(默认是一个换行符)
RSTART 由match函数所匹配的字符串的第一个位置
SUBSEP 数组下标分隔符(默认值是/034)
示例
1.打印1-3行的两种表示
pengzw@super-server:~$ awk '{if(NR>=1 && NR<=3) print $1}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
pengzw@super-server:~$ awk 'NR>=1 && NR<=3 {print $1}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

2.过滤出 good up,利用-F可以指定多个分隔符,两列中间添加tab或blank需要双引号。 "[ ,]" 或者 [" ",]

pengzw@super-server:~$ cat test.txt 
Good good study, day day up!
pengzw@super-server:~$ awk -F "[ ,]" '{print$1 " "$7}' test.txt
Good up!

3.正则运算符号

pengzw@super-server:~$ awk 'BEGIN{a="100testaa";if(a~/100/) {print "ok"}}'
ok

4.其他

awk '$3 =="gene" {print $0 }' gff  将第三列为gene的行输出到屏幕上
awk '$1 =="Chr1"  && $4 >= 1 && $5 <=100  {print $0 }' gff  #输出指定区域的整行,改变$0,输出$4列数据
awk '$1 =="Chr1"  && $4 >= 1 && $5 <=100  {print $4 "\t"$5 }' gff  #输出起始和终止位置

相关文章

  • Linux

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

  • linux中awk的复习

    awk使用格式:awk [选项参数] '内容' '{条件} {动作} {条件} {动作}' 示例1:在linux中...

  • awk

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

  • linux || awk(1)

    awk学习 AWK其名得自于三位创始人 Alfred Aho,Peter Weinberger和 Brian Ke...

  • 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...

  • Linux文本编辑三剑客之---awk的使用

    1、awk 1.1 认识awk awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以...

  • awk

    1- awk是什么 awk是linux环境下的一个命令行工具,但是由于awk强大的能力,我们可以为awk工具传递一...

  • Linux awk命令详解

    Linux awk命令详解 使用方法 调用awk 入门实例 1. 显示最近登录的5个帐号 awk工作流程是这样的:...

网友评论

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

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