Linux gensub函数用法

2017-11-21 00:00:09: 现在最前,吐槽一下,现在baidu上搜点东西,清一色的抄袭文章,真是受不了,自己写一个记录一下吧!还得翻墙上gg!

什么是gensub?

gensub是LINUX字符处理函数之一,不是那么的常见,但是却非常的好用的简便。在处理日志等场景中,往往显得非常的优雅

几个例子

案例1

替换某字符串中的第某个字符为新字符

echo 'xxxx' awk '{print $0=gensub("x","1","4")}'
xxx1

ecgo 'xxxx' awk '{pring $0=gensub("x","1","g")}'
1111
案例2

替换处理文本格式

more interst_obj_to_tag.log 
孕妇:孕妇,产妇,补锌,补硒,补铁,补钙,补碘
宝宝餐:婴幼儿,婴儿(6-8个月),婴儿(8-10个月)
养生:养发,健脾养胃,提高免疫
食疗:疾病
养颜:美白,排毒养颜,紧致肌肤,祛痘祛斑
减肥:减肥瘦身
素食:素食者
新手:新手菜
汤:汤
烘焙:烘焙
辣:辣
海鲜:海鲜
酸甜:酸甜
清淡:清淡

现在需要将单行变换为多行,例如第一行,转换为:

孕妇:孕妇
孕妇:产妇
孕妇:补锌
孕妇:补硒
孕妇:补铁
孕妇:补钙
孕妇:补碘

函数写法

$ more handle_obj_to_tag.sh 
#!/bin/sh
cat interst_obj_to_tag.log | awk -F ':' '
{
        area=gensub(/省|市|自治区|壮族|维吾尔族|回族/,"","g",$1);
        tags=$2","$3","$4","$5","$6","$7;
        n=split(tags,tag,",")
        for(i=1;i<=n;i++){
                if(tag[i]!=""){
                        print area","tag[i]",interest";
                }
        }

}'>data_obj_tag.log

新文件:

孕妇,孕妇,interest
孕妇,产妇,interest
孕妇,补锌,interest
孕妇,补硒,interest
孕妇,补铁,interest
孕妇,补钙,interest
孕妇,补碘,interest
宝宝餐,婴幼儿,interest
宝宝餐,婴儿(6-8个月),interest
宝宝餐,婴儿(8-10个月),interest
养生,养发,interest
养生,健脾养胃,interest
养生,提高免疫,interest
食疗,疾病,interest
养颜,美白,interest
...
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值