Shell - awk 原理和使用

Shell - awk 原理和使用

awk 原理

  1. awk 的工作原理是按行读取数据,寻找符合匹配模式的数据,进行对应的操作
  2. awk 基本结构包括模式匹配(用于找到要处理的行)和处理过程(即处理动作)
  3. awk有两个特殊的模式:BEGIN和END,他们被放置在没有读取任何数据之前以及在所有数据读取完成以后执行。

提示:awk读取文件内容的每一行时,将对比改行是否与给定的模式相匹配,如果匹配则执行处理过程,否则对该行不做任何处理。

如果没有指定处理脚本,则把匹配的行显示到标准输出,即默认处理动作是print打印行;

如果没有指定模式匹配,则默认匹配所有数据。

命令结构:

awk [选项参数] 'BEGIN{ commands } pattern{ commands } END{ commands }'

选项参数:

-F: 指定每一行内的分隔符,默认按照空格切割; 如:-F , 用 , 分割; 多个分割方式:BEGIN{FS="[:, ]"}
-v:定义变量 通常在 BEGIN 中定义; 没有定义的变量初始为0或者空字符串
-f: 读取awk脚本文件用于执行

内置变量:

变量名变量说明
ARGC命令行参数个数
FILENAME当前输入文档的名称
FNR当前输入文档的当前记录编号,尤其当有多个输入文档时有用
NR输入流的当前记录编号
NF当前记录的字段个数
FS字段分隔符
OFS输出字段分隔符,默认为空格
ORS输出记录分隔符,默认为换行符\n
RS输入记录分隔符,默认为换行符\n
$n当前记录的第n个字段,字段间由FS分隔
$0完整的输入记录

匹配:

log.txt:

2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo

字符串匹配

~ 表示模式开始。// 中是模式

# 输出第二列包含 "th",并打印第二列与第四列
$ awk '$2 ~ /th/ {print $2,$4}' log.txt
----------------result--------------------
this a

模式取反

$ awk '$2 !~ /th/ {print $2,$4}' log.txt
----------------result--------------------
Are like
a
There orange,apple,mongo
$ awk '!/th/ {print $2,$4}' log.txt
----------------result--------------------
Are like
a
There orange,apple,mongo

https://blog.51cto.com/manual/932958

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值