awk

Split 函数

语法:

split(input-string,output-array,separator)

split函数将一个字符串转换成单独的数组元素。它需要以下三个参数。

1. input-string:这是输入字符串需要被分成多个字符串

2. output-array:这个数组将包含分割字符串作为单个元素。

3. separator:分隔符用于分隔输入字符串。

举个例子,原items-sold.txt文件被略微改变为具有不同字段分隔符,即一个冒号分隔项目数和销售数量。在销售数量里,个体数量都用逗号分隔。

$ cat items-sold1.txt
101:2,10,5,8,10,12
102:0,1,4,3,0,2
103:10,6,11,20,5,13
104:2,3,4,0,6,5
105:10,2,5,7,12,6

所以,为了让我们能计算出特定项目销售的总数,我们应该采取第二个字段(即所有用逗号分隔数量),用逗号分隔符分开他们,并存储于字符串数组,然后通过数组循环来进行累加数量。

$ cat split.awk
BEGIN {
    FS=":"
    }
    {
        split($2,quantity,",");
        total=0;
        for (x in quantity)
            total=total+quantity[x];
        print "Item", $1, ":", total, "quantities sold";
    }

$ awk -f split.awk items-sold1.txt
Item 101 : 47 quantities sold
Item 102 : 10 quantities sold
Item 103 : 65 quantities sold
Item 104 : 20 quantities sold
Item 105 : 42 quantities sold

案例二:

$ sudo netstat -lntp | grep mysqld | awk '{print $4}'| awk '{split($0,ports,":");print ports[length(ports)]}’
3306