AWK使用总结(2)使用split()时指定多个分隔符,使用-F时指定多个分隔符

首先,split可以设定多个分隔符

例1.

输出下面这段文本,提取每行末尾的两个数字,如第一行提取185,5,第二行提取8,1

ERROR20121211 11:35:00[AppWorker] __LSE vec_txt_size:185 vec_pic_size:5 
ERROR20121211 11:35:00[AppWorker] __LSE vec_txt_size:8 vec_pic_size:1
ERROR20121211 11:35:00[AppWorker] __LSE vec_txt_size:46 vec_pic_size:20 
ERROR20121211 11:35:00[AppWorker] __LSE vec_txt_size:0 vec_pic_size:0

那么分割符可以设定为冒号或者空格。

awk -F"\t" '{
split($0,array,/[: ]/);
for(i=1;i<=length(array);i++)
	print array[i]
}'   $INPUTFILE 



例2.

ArgLst = "5P12p89"

分割符设定为p或者P

split( ArgLst, Arr, /[Pp]/)

执行后 : Arr[1]=5, Arr[2]=12, Arr[3]=89



其次,-F也可以设定多个分隔符
一般而言,人们常用awk -F '\t'来表示分隔符,比如
awk -F '\t' '{print $1}' file1.txt
将处理文本file1.txt,用制表符(\t)分隔每一行,并打印其中第一列打印出来。

现在假设要处理一段文本,每行有多个分隔符号。比如现在需要提取下面这行文本中的pic之后的数字244和txt之后的数字246,
20130304 16:50:00 [normal predict] word:手机 pic:244 txt:246

如果能够指定分隔符既可以为空格,又可以为冒号,那么处理将会变得简单。可以使用正则表达式来指定多个分隔符,格式为 -F'[空格:]+' 如下
awk -F'[ :]+' '{print $NF"\t"$(NF-2)}'  file1.txt
输出结果将为
244 246

例3
类似地,如果要指定(和,为分隔符,可以这么写
awk -F '[(,]' '{print $2"\t"$3}' 




  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值