linux文件格式化,linux文本处理(awk格式化文本)

AWK作用

生成文本格式化的报表

本质:脚本语言解释器,一门编程语言,支持条件判断、数组、循环等功能。

使用格式:awk [options] 'Pattern{Action}'

file

原理:awk是逐行处理的,默认以"换行符"为标记,识别每一行;默认使用空格作为分隔符。

内置变量

$0 显示整行,NF当前行被分隔字段数,$NF最后一个字段,NR当前行数

打印输出(常用action)

awk '{print}' test # 打印文本

awk '{print $2,$4,$5}' test

#打印指定第2,4,5列

#格式化输出(拼接指定字符串)

awk '{print $2,$4,666}' test #123 abc

666

awk '{print "diyilie:"$1,"dierlie:"$2}'

test

#diyilie:123 dierlie:abc

模式

特殊模式(BEGIN+END)

BEGIN:执行文本前操作 END:执行文本后操作

#cat test

abc 123 iuy ddd

8ua 456 auv ppp 777

awk 'BEGIN{print "aaa","bbb"} {print

$1,$2}END{print "ccc","ddd"}' test

aaa bbb

abc 123

8ua 456

ccc ddd

空模式

没有任何条件 awk '{print $0}' test

关系运算模式

awk 'NF==5{print $0}' test

awk '$1==123 {print $0}' test

关联数组用于分组统计

awk ' {count[$1]++} END{for(i in count

){print i,count[i]}}' test

跳过某行处理

awk '{if(NR==1){next};print $0}' test

正则模式

awk'/正则表达式/{print $0}' file

正则选项:awk --posix

'$2~/192\.168\.[0-9]{1,3}\.[0-9]{1,3}/{print $1,$2}' file

行范围模式

awk'/正则1/,/正则2/{print $0}' file

输入输出分隔符(常用选项)

输入分隔: -F# or -v FS='#'

输出分隔: -v OFS='---'

-v:设置变量的值

内置函数

数值类

srand(),rand()随机值

int()取整

字符串类

gsub("l","L",$1)# 替换函数

gsub("[a-z]",6,$1)# 替换函数,小写字母替换6

sub("l","L",$1)# 首次替换函数

length(),默认参数$0

split(ts,shuzu,":")#ts="11:22:33"

,切分字符串ts至数组shuzu,下标从1开始可以遍历

asort(shuzu,newshuzu);根据元素值排序

asorti(shuzu,newshuzu);根据元素下标排序

三目运算

awk -F:'{$3<500?a++:b++}

END{print a,b}' file

打印奇偶行

awk 'i=!i' file (打印奇数行)

awk '!(i=!i)' file (打印偶数行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值