awk 字段处理

基本用法:
$ awk '条件动作1{动作1} 条件动作2{动作2} ...' filename

概述:
1. awk为行处理字段,默认字段分割为空格 或 [tab]
2. { } 表示动作(command),条件类型置于 { } 外,最后用单引号 ' ' 括住
3. 当条件类型为if语句时,要置入{ }动作内
4. awk所有动作中,{ }中,若有多个辅助命令,可用;或Enter隔开
5. awk可接受前个 command 的 standardoutput

I.变量
变量名称代表意义
NF每一行拥有的字段总数
NR目前awk处理是第几行
FS目前的分割字符,默认是空格
$0一整行数据
$1第一个字段(第一列)
$2第二个字段(第二列)
$ last -n 5 | awk '{print $1 "\t lines: " NR "\t columes: " NF}'
# awk中变量需要大写,非变量部分需要用双引号
II.条件类型

** 逻辑运算符(<;>;<=;>=;==;!=)**

$ cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t " $3}'
$ cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}'
# 关键字BEGIN预先设置awk变量,否则{FS=":"}在第二行才能生效
# 此处可看作两个条件类型及两个动作
III.高级操作(条件及循环计算)

pay.txt文件内容

Name1st2st
VBrid230330
DMwR450679
test230112

计算每行的加总并显示

$ cat pay.txt | \
awk 'NR==1{printf "%8s %8s %8s %8s\n",$1,$2,$3,"Total"}
NR>=2{total = $2 + $3
printf "%8s %8s %8s %8.2f\n",$1,$2,$3,"Total"}'

$ cat pay.txt | \
awk '{if (NR==1) printf "%8s %8s %8s %8s\n",$1,$2,$3,"Total"}
NR>=2{total = $2 + $3
printf "%8s %8s %8s %8.2f\n",$1,$2,$3,"Total"}'

# 两句内容一样;条件类型可用if语句写入到'{}'动作中
# printf 用法详见prinf说明
# %s;%i;%f分别表示字符串,整数,浮点数,其中浮点数的.占一位数

awk所有动作中,{ }中,若有多个辅助命令,可用;或Enter隔开
循环计算待更新

本文为《鸟哥的linux私房菜基础篇第三版》第12章部分学习笔记

转载于:https://www.cnblogs.com/arron-j/p/8365591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值