awk基本用法

一、基本用法

awk在shell里面基本都会用到,我们先了解一下awk的基本用法,如下

# 格式
$ awk 动作 文件名

示例1:
$ awk ‘{print $0}’ demo.txt
分析:demo.txt是awk所要处理的文本文件;'{print $0}'表示要执行的动作,也就是打印demo.txt的每一行,因为print是打印命令,$0代表当前行。因此上面命令的执行结果,就是把每一行原样打印出来。

示例2:

$ echo 'this is a test' | awk '{print $0}'

结果如下
this is a test

示例3:

$ echo 'this is a test' | awk '{print $2}'

结果如下:
is

分析示例2和示例3,可以看出来$0、$1、$2、$3可以表示不同的内容,那是因为awk会根据空格和制表符,将每一行分成若干字段,依次用$1、$2、$3代表第一个字段、第二个字段、第三个字段等等,而$0代表当前行。

awk支持的变量

上面我们了解了$ + 数字表示某个字段,awk还提供其他一些变量,比如下面的变量

$n 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段
$0 这个变量包含执行过程中当前行的文本内容
NF 表示字段数,在执行过程中对应于当前的字段数,$NF就代表最后一个字段,$(NF-1)代表倒数第二个字段
NR 表示记录数,在执行过程中对应于当前的行号
FILENAME:当前文件名
FS:字段分隔符,默认是空格和制表符。
RS:行分隔符,用于分割每一行,默认是换行符。
OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
OFMT:数字输出的格式,默认为%.6g。

示例

$ echo 'this is a test' | awk '{print $NF}'

结果如下:
test
分析:变量NF表示当前行有多少个字段,因此$NF就代表最后一个字段。所以输出test

awk支持的函数

tolower():字符转为小写。
length():返回字符串长度。
substr():返回子字符串。
sin():正弦。
cos():余弦。
sqrt():平方根。
rand():随机数。

示例

$ awk -F ':' '{ print toupper($1) }' demo.txt

ROOT

其中demo.txt的内容如下

root:x:0:0:root:/root:/usr/bin/zsh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的修养

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值