`

awk sub和gsub区别及用法

 
阅读更多

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>

 awk -F '|'  '{sub(/[0-9]+/,"",$2);print $0}' data.test 

三。sub和gsub的区别


sub匹配第一次出现的符合模式的字符串,相当于 sed 's//'   。
gsub匹配所有的符合模式的字符串,相当于 sed 's//g'   。
例如:
awk '{sub(/Mac/,"Macintosh");print}' urfile    用Macintosh替换Mac
awk '{sub(/Mac/,"MacIntosh",$1); print}' file    第一个域内用Macintosh替换Mac
把上面sub换成gsub就表示在满足条件得域里面替换所有的字符。
awk的sub函数用法:
sub函数匹配指定域/记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。
如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候。格式如下:
sub (regular expression, substitution string):
sub (regular expression, substitution string, target string)
实例:
$ awk '{ sub(/test/, "mytest"); print }' testfile
$ awk '{ sub(/test/, "mytest", $1); print }' testfile
      第一个例子在整个记录中匹配,替换只发生在第一次匹配发生的时候。
      第二个例子在整个记录的第一个域中进行匹配,替换只发生在第一次匹配发生的时候。
如要在整个文件中进行匹配需要用到gsub
gsub函数作用如sub,但它在整个文档中进行匹配。格式如下:
                  gsub (regular expression, substitution string)
                  gsub (regular expression, substitution string, target string)
实例:
$ awk '{ gsub(/test/, "mytest"); print }' testfile
$ awk '{ gsub(/test/, "mytest", $1); print }' testfile
      第一个例子在整个文档中匹配test,匹配的都被替换成mytest。
      第二个例子在整个文档的第一个域中匹配,所有匹配的都被替换成mytest。
另外, 只有当记录中的域有改变的时候 ,指定0FS变量才有用, 如果记录中的域无变化, 指定OFS产生不了实际效果。


awk -F'|' -v OFS='|' '{ gsub(/[0-9]/, "", $3); print $0; }' data.txt   


将把第三个域中所有数字都去掉。


另外,对于数字的匹配,可以使用十六进制。


awk -F'|' -v OFS='|' '{ gsub(/[/x30-/x39]/, "", $3); print $0; }' data.txt 




删除所有空白:(空格、TAB等)【注:三条语句等效】:
[oracle@localhost 201402261951.script]$ echo 'a bc  d' | awk '{gsub(/[[:blank:]]/, "",$0)}'
abcd
[oracle@localhost 201402261951.script]$ echo 'a bc  d' | awk 'gsub(/[[:blank:]]/, "",$0)'
abcd

【下面这条语句好像只输出被处理完毕后的那些行,未没被处理的行,不会输出。上面的2条命令,不论是否被处理,每行都会被输出,因为有print $0】

[oracle@localhost 201402261951.script]$ echo 'a bc  d' | awk 'gsub(/[[:blank:]]/, "")'
abcd

 

转自:http://blog.itpub.net/27042095/viewspace-1096916/

分享到:
评论

相关推荐

    AWK用法AWK用法AWK用法

    awk ‘/101/’ file 显示文件file中包含101的匹配行。 awk ‘/101/,/105/’ file awk ‘$1 == 5′ file awk ‘$1 == “CT”‘ file 注意必须带双引号 awk ‘$1 * $2 &gt;100 ‘ file awk ‘$2 &gt;5 && $2&lt;=15' file

    LINUX的awk和sed的常用用法

    LINUX的awk和sed的常用用法 LINUX的awk和sed的常用用法

    awk详细用法小结awk awk

    因为遇到了awk问题,所以找到这个小结,共享一下

    awk 工具用法说明

    awk 工具用法说明 awk 工具用法说明 awk 工具用法说明

    awk学习awk学习awk学习awk学习

    awk学习awk学习awk学习awk学习awk学习awk学习awk学习

    sed ,awk用法

    sed,awk用法,sed,awk是linux开发必备知识,公司常用技术,很好很强大的sed和awk用法介绍,绝对值得您收藏学习。好资源大家一起分享!

    awk用法小结--有关awk的材料

    awk用法小结 - - - by ruson 2006.4 NTU 1. awk非常适合于结构化的文本文件(行、列数据)复杂处理。相对于sed而言,它可进行复杂的编程处理,并且可以产生复杂的报表输出。 2. awk通常有三个版本,旧awk、nawk...

    linux bash之 awk用法

    linux bash 之awk,awk的详尽用法

    awk入门到精通.pdf

    (awk 指令并不多, 且其中之大部分与 C语言中之用法一致, 本手册中对该类指令之语法及特性 不再加以繁冗的说明, 读者若欲深究,可自行翻阅相关的 C 语言书籍) 2. awk概述 为什么使用awk awk 是一种程序语言. 它具有...

    windows 下的awk 命令工具

    windows 下的awk 命令工具

    MOXA_AWK-3121配置方法及要点说明

    MOXA_AWK-3121配置方法及要点说明

    学习和理解AWK的最佳书籍Effective AWK Programming

    学习和理解AWK的最佳书籍  一致这本书是学习awk的最好书籍,网上下不到的,国内也买不到。国家图书馆和北京大学图书馆都有。强烈建议所有想学awk的同志们阅读(会有很多awk语言之外的启迪) 偶然机会得到,不敢独享...

    awk 基本的一些常用用法

    把实际应用中一些常用的awk的用法进行了总结,包括多文件操作,与shell之间的相互调用等

    awk用法详解

    使用awk 撰写程序比起使用其它语言更简洁便利且节省时间. awk 还具有一些 内建功能, 使得awk 擅于处理具数据行(Record), 字段(Field) 型态的资料; 此外, awk 内建有pipe 的功能, 可将处理中的数据传送给外部的Shell...

    三剑客之【awk】.html

    awk命令常用用法整理;加入了自己在平时运用中的实例,比如通过查询数据库生成csv文件或insert语句。将markdown文件转换成了html文件。 awk有许多强大的字符串函数 gsub(r,s) #在整个$0中,用s代替r gsub(r,s,t) 在...

    sed和awk单行命令比较

    sed和awk单行命令比较,通过例题来比较,详细说明了sed和awk的区别

    awk用法__都是例子

    awk用法__都是例子 awk用法__都是例子 awk用法__都是例子 awk用法__都是例子

    awk基本入门和高级用法

    awk学习快速入门、基本用法、高级应用。基本入门说明使用的基本方法;高级应用主要是管道的用法

    MOXA_AWK3121配置方法

    MOXA_AWK-3121 配置方法及要点说明.pdf 挺好的,详细

    AWK应用和讲解步骤

    man 中文awk版内容包括:语法、AWK变量、操作符、语句的编写,数组和函数的书写内容。

Global site tag (gtag.js) - Google Analytics