awk处理文本(1)
awk处理文本(1)
lucifercn 发表于3年前
awk处理文本(1)
  • 发表于 3年前
  • 阅读 90
  • 收藏 8
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

1. awk关联数组,捕捉长度和域值数目不满足要求的数组

1.awk =>
#!/usr/bin/awk 
length($1) > 2 {e++; print "long name in line", NR}
NF != 1 {e++; print "bad name count in line", NR}
END {if (e > 0) print "total errors: ", e}

# cat 1 =>
223  xiaobao
32 caoqing
42
52
2245
2

# awk -f 1.awk 1 => 
long name in line 1
bad name count in line 1
bad name count in line 2
long name in line 5
total errors:  4

2. 给定n个名字的文件,生成全部的n*n个名字

2.awk =>
#!/usr/bin/awk
{ name[$1] = 1 }
END { for (i in name)
        for(j in name)
          {print i, j};
}

# cat 2 =>
huanhuan
xiaobao
caoqing
grafield

# awk -f 2.awk 2 =>
grafield grafield
grafield huanhuan
grafield caoqing
grafield xiaobao
huanhuan grafield
huanhuan huanhuan
huanhuan caoqing
huanhuan xiaobao
caoqing grafield
caoqing huanhuan
caoqing caoqing
caoqing xiaobao
xiaobao grafield
xiaobao huanhuan
xiaobao caoqing
xiaobao xiaobao

3. 统计个数

3.awk =>
#!/usr/bin/awk
{count[$1] += $2}
END{ for (i in count)
  {print count[i], i};
}

# cat 3 =>
caoqing:20
xiaobao:100
caoqing:5 
wanghuan:4 
xiaobao:10

# awk -F":" -f 3.awk 3
4 wanghuan
25 caoqing
110 xiaobao

4. 统计单词个数

4.awk =>
#!/usr/bin/awk
{ for(i=1; i<NF; i++) count[$i]++ }
END { for ( i in count)
        {print count[i], i}
}

# cat 4
caoqing xiaobao wanghuan xiaobao xiaobao wanghuan xiaobao caoqing

# awk -f 4.awk 4
2 wanghuan
1 caoqing
4 xiaobao


共有 人打赏支持
粉丝 15
博文 71
码字总数 63041
×
lucifercn
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: