美文网首页
awk的用法

awk的用法

作者: 汪汪80 | 来源:发表于2019-11-21 16:46 被阅读0次

1.awk语法

awk 'pattern {action}' file

awk:指令名称

pattern:过滤器

action:动作

2.pattern

pattern是过滤器,在逐行处理的过程中,可以使用过滤器过滤掉不需要的行,或者过滤出需要的行。而过滤器可以有以下几种方式:

2.1.正则表达式

使用正则表达式来过滤,将要过滤的内容放在 / /中。

比如,过滤包含hello行:

awk '/hello/{print}' file

2.2.普通表达式

==(相等)、~(包含)、!~(不包含)、&&(且)、||(或)

示例:

test.txt内容如下:

hello world
hello wanglin
meituan

过滤第一个字段等于“hello”的行

awk '$1 == "hello"{print}' test.txt
hello world
hello wanglin

过滤出第一个字段包含“hello”的行

awk '$1 ~ "hello"{print}' test.txt
hello world
hello wanglin

过滤出第一个字段不包含“hello”的行

awk '$1 !~ "hello"{print}' test.txt
meituan

过滤出包含“hello”且包含“world”的行

awk '/hello/ && /world/{print}' test.txt
hello world

过滤出包含“hello”或者包含“meituan”的行

awk '/hello/ || /meituan/{print}' test.txt
hello world
hello wanglin
meituan

2.3.范围表达式

由两个pattern组成,begpat和endpat,中间使用逗号(,)分割,begpat表示匹配的开始位置,endpat表示匹配的结束位置

示例

test1.txt内容如下:

hello
meituan
alibaba
baidu
hello
baidu
alibaba
jd
hello

过滤出第一个字段是“hello” 到 “baidu”的行

awk '$1 == "hello",$1 == "baidu"{print}' test1.txt
hello
meituan
alibaba
baidu
hello
baidu
hello

2.4.BEGIN/END表达式

使用语法是 awk 'BEGIN{}{}END{action}',指定 initialization 和 cleanup 规则。

示例

test2.txt内容如下:

1
2
4
23
2
9
12

求最大值

awk 'BEGIN{max=0}{max=($1>max?$1:max)}END{print "max = "max}' test2.txt
max = 23

2.5.BEGINFILE/ENDFILE表达式

类似2.4,只不过是规则更复杂

2.6.空表达式

匹配所有行,不过滤任何内容

test.txt内容如下:

hello world
hello wanglin
meituan

打印test.txt的内容

awk '{print}' test.txt
hello world
hello wanglin
meituan

3.内置变量

FS:分隔符,默认空格

NR:当前行

NF:当前记录字段个数

$0:当前记录

$0 ~ n:当前记录中的第n个字段

示例

test3.txt内容:

hello,world,meituan,baidu,jd
hello,world,meituan,baidu,didi
hello,world,meituan,baidu,dada
hello,world,meituan,baidu,alibaba

打印每行每个字段用#连接起来

awk -F "," '{print $1"#"$2"#"$3"#"$4"#"$5}' test3.txt
hello#world#meituan#baidu#jd
hello#world#meituan#baidu#didi
hello#world#meituan#baidu#dada
hello#world#meituan#baidu#alibaba

打印第2 ~ 第5行的内容

awk 'NR == 2, NR == 5{print}' test3.txt
hello,world,meituan,baidu,didi
hello,world,meituan,baidu,dada
hello,world,meituan,baidu,alibaba

打印第2 ~ 第5行的内容最后一个字段

awk -F "," 'NR == 2, NR == 5{print $NF}' test3.txt
didi
dada
alibaba

4.内置函数

gsub(s,r): 在$0中,使用r代替s

index(s,t): 返回s中t的第一个位置

length(s) :s的长度

match(s,r) :s是否匹配r

substr(s,p) :返回s中从p开始的子串

5.参考

https://www.gnu.org/software/gawk/manual/html_node/Patterns-and-Actions.html#Patterns-and-Actions

相关文章

  • awk用法详解

    awk 用法 awk ' pattern {action} ' 1、awk '/101/' file ...

  • 1-awk教程

    一、基本用法 awk的基本用法就是下面的形式。# 格式$ awk 脚本片段 文件名# 示例$ awk '{prin...

  • awk的使用方法

    awk 用法: 常用格式: awk [options 参数] 'commands' ...

  • 18-文本处理三剑客之awk

    本章内容 ◆ awk介绍◆ awk基本用法◆ awk变量◆ awk格式化◆ awk操作符◆ awk条件判断◆ aw...

  • shell对输出流的处理

    shell对输出流的处理awk介绍awk基本用法awk高级用法awk小技巧在日常计算机管理中,总会有很多数据输出到...

  • 2017 09-04 AWK

    本章主要学习内容awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 awk条件判断 a...

  • awk命令使用

    用法一: awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' ...

  • awk

    awk:报告生成器,格式化文本输出 内容: awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 a...

  • 22. 三剑客之awk

    1. AWK基础 1.1 AWK工作原理和基本用法说明 AWK:Aho, Weinberger, Kernigha...

  • awk命令的使用

    awk命令的使用 awk命令格式awk '条件1{动作1} 条件2{动作2}…' 文件名 在介绍awk命令的用法前...

网友评论

      本文标题:awk的用法

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