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

来源:互联网 发布:央视网络直播 编辑:程序博客网 时间:2024/05/21 17:46

首先,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:1ERROR20121211 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}' 




原创粉丝点击