Linux gensub函数用法

来源:互联网 发布:js控制浏览器最小宽度 编辑:程序博客网 时间:2024/06/17 03:17

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

什么是gensub?

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

几个例子

案例1

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

echo 'xxxx' awk '{print $0=gensub("x","1","4")}'xxx1ecgo '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/shcat 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...
原创粉丝点击