awk基础

本文深入探讨了awk的模式与操作、字符串与数字转换、begin和end模式的使用,以及输入重定向和输出重定向的功能,并展示了数组在awk中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]1、awk 语法分模式和操作[/b]
模式由正则表达式或判别条件真伪的表达式组成,或者2者的组合
默认操作是打印符合表达式要求文本行
例子
awk -F'[ ;,]' '/jom/{print $1,$2,$3}' file
等价awk -F'[ ;,]' '$0 ~ /jom/{print $1,$2,$3}' file
操作是{}中以分号分隔的语句
操作前面可以有模式
同一行的语句由分号分隔,独占一行则有换行符分隔

内部变量
$0 输入文件的每一行
行被空格分隔为单词,每个单词存储在$1--$n的变量中

NR 每行的行号
NF 每行被分隔符分成几个字段
awk -F: 冒号分隔符
awk -F'[ ;/]' 三个分隔符 空格分号斜杠


[b]2、字符串和数字之间的转换[/b]
number=35
name="abf"
字符串强转为数字
name + 0
数字强转为字符串 number ""

[b]3、begin模式[/b]
必需在对输入文件进行任何操作之前执行,begin通常被用来修改内置变量(OFS、RS、FS等)、为用户自定义变量赋初始值

end模式
awk处理完所有输入行之后处理end模式

[b]4、输入重定向[/b]
getline函数用于从标准输入、管道或者文件(非当前处理的文件)中读取输入
# awk 'BEGIN{"date" | getline d;split(d,mon);print mon[2]}'
# May

#awk 'BEGIN{while("ls" | getline d) s[x++]=d} {for(item in s){print s[item] }}'

# awk 'BEGIN{while (getline < "/etc/passwd" >0 )lc++;print lc}'
35

输出重定向
#cat CheckLaunch.log.2012-05-17 | awk -F'[=,]' '$9==2 && $31==1 {print $8,"--"$9,"--"$30,"--"$31,"--"$32,"--"$33 >> "test.log"}'
重定向的文件用双引号括起来

awk中的管道
每次只能打开一个管道,必需关闭才能打开另外一个管道
管道右边的命令行被括在双引号中间

3、数组在awk中称关联数组,下标可以是数字也可以是字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值