awk命令

概述

awk '{pttern + action}' {filename}

parttern表示在AWK总查找的内容,action表示找到内容执时所执行的动作。AWK以文件的一行作为处理单位。
BEGIN/END

BEGIN/END

BEGIN块 在处理输入前会执行一次
END块在处理完文件之后再执行一次

运算符

赋值运算符   = += -= *= /= %= ^= **=
逻辑与         &&
逻辑或     ||
匹配正则        ~
不匹配正则   |~
加减乘除取余  +-*/%
一元加减        -+
逻辑非         !
求幂      ^
自增自减     --++
字段引用        $
字符串链接符  空格
三目运算        ?:
是否在数组中  in

内置变量

$0         当前记录
$1-$n      当前记录的第n个字段
FS          输入字段分隔符,默认是空格 field split
RS          输入记录分隔符,默认是换行符 record split
NF          当前记录的字段数 number of field
NR          已经读出的字段数,从1开始 number of record
OFS         输出字段分隔符,默认是空格
ORS         输出记录分隔符,默认是换行

awk正则

实例

  1. 指定多个分隔符
vim test.tst
I am Petter,my numver is 20109
找出Petter 20109

awk -F '[ ,]+' '{print $3 " " $7}' test.txt

Petter 20109

2/统计某个文件夹下文件占用的字节数

ll | awk 'BEGIN{size=0;} {size=size+$5} END{print "[end]size is",size}'

2.字段分隔符使用

1.FS="\t" 一个或多个Tab分隔
vim tab.txt
ww  CC      TDD

awk 'BEGIN{FS="\t+"}{print $1,$2,$3}' tab.txt

2.FS="[" ":]+" 一个或者多个空格或者:

[root@Gin scripts]# cat recode.txt
Jimmy the Weasel
100 Pleasant Drive
San Francisco,CA 123456

Big Tony
200 Incognito Ave.
Suburbia,WA 64890
[root@Gin scripts]# cat awk.txt
#!/bin/awk
BEGIN {
        FS="\n"
        RS=""
}
{
        print $1","$2","$3
}
[root@Gin scripts]# awk -f awk.txt recode.txt
Jimmy the Weasel,100 Pleasant Drive,San Francisco,CA 123456
Big Tony,200 Incognito Ave.,Suburbia,WA 64890
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值