`

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/

分享到:
评论

相关推荐

    Effective awk Programming, 4th Edition[awk高效编程4版]

    书中详细介绍了字符串函数,如length、index、sub、gsub等,以及如何进行字符串的拼接和比较。此外,书中还涵盖了数组的使用,包括关联数组和数值数组,它们允许开发者存储和处理多组相关数据。 模式匹配是awk的一...

    《SED_单行脚本快速参考》的_awk_实现.txt )

    - **《SED_单行脚本快速参考》的_awk_实现**:这个标题表明文档旨在比较和展示如何使用`awk`来实现通常由`sed`执行的任务。`sed`(Stream Editor)是一种流编辑器,主要用于文本数据的格式化、过滤、替换等操作;而`...

    linux shell 编程之 awk用法

    使用`gsub`和`sub`函数可以全局或局部替换文本中的模式。 ```sh awk '{gsub("old", "new"); print}' filename ``` 2. **条件判断**: 使用逻辑运算符`&&`(AND)、`||`(OR)进行条件组合。 ```sh awk -F: '...

    linux-shell脚本命令:awk命令简介

    awk内置函数还包括对字符串进行操作的功能,例如 substr、split、sub和gsub函数,分别用于获取子字符串、分割字符串到数组、字符串替换等。 使用awk时,模式匹配是一个非常重要的功能。模式可以是字符串或者正则...

    sed&awk101 Hacks

    特别是GAWK/NAWK的字符串函数,比如sub、gsub、match、以及变量RSTART和RLENGTH也被涵盖。 本手册是sed和awk学习者的宝贵资源,通过掌握手册中的知识,可以大幅提升文本处理的效率和自动化水平。

    Sed 和 awk 基本操作 linux操作系统爱好者学习

    根据提供的文件标题、描述、标签以及部分内容,我们可以总结出与Sed和awk基本操作相关的知识点。Sed(Stream Editor)和 awk 是 Linux 操作系统中非常重要的文本处理工具,广泛应用于脚本编程、数据处理等领域。 ##...

    shell awk从入门到精通

    下面我们将详细介绍`awk`的基本用法、常用参数、BEGIN和END块以及一些常见的函数。 **一、awk用法说明** 1. **默认分隔符**:当输入字段的分隔符是空格或制表符时,`-F`参数可以省略,awk会自动识别。 2. **过滤...

    awk命令、awk编程语言详细介绍和实例

    字符串函数如`sub()`和`gsub()`用于替换匹配的子串,`index()`找到子串的位置,`length()`计算字符串长度等。数学函数包括`cos()`、`sin()`、`sqrt()`等,还有`rand()`生成随机数,`int()`进行取整操作。 五、awk的...

    linux 字符串操作

    2. **使用 `awk sub` 和 `awk gsub`:** ```bash $ echo $var | awk '{sub("","_", $0); printf("%s\n", $0);}' get_thelengthofme ``` `awk sub` 用于替换字符串中的第一次匹配,而 `awk gsub` 用于全局替换...

    shell学习日志总结

    通过以上内容,我们可以看到Shell脚本、Awk和Sed在处理文本数据时的强大功能和灵活性。它们不仅可以帮助我们进行基本的数据检索和格式化,还可以实现复杂的文本分析和数据转换任务。掌握这些工具,对于任何需要频繁...

    多文件内容检索替换

    4. **内容替换**:如果找到匹配的模式,脚本会使用`sub`或`gsub`方法进行替换。`sub`替换第一次出现的匹配项,而`gsub`替换所有匹配项。 5. **写入文件**:替换后的新内容需要被写回文件。这可以通过创建一个新的...

Global site tag (gtag.js) - Google Analytics