<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/
相关推荐
书中详细介绍了字符串函数,如length、index、sub、gsub等,以及如何进行字符串的拼接和比较。此外,书中还涵盖了数组的使用,包括关联数组和数值数组,它们允许开发者存储和处理多组相关数据。 模式匹配是awk的一...
- **《SED_单行脚本快速参考》的_awk_实现**:这个标题表明文档旨在比较和展示如何使用`awk`来实现通常由`sed`执行的任务。`sed`(Stream Editor)是一种流编辑器,主要用于文本数据的格式化、过滤、替换等操作;而`...
使用`gsub`和`sub`函数可以全局或局部替换文本中的模式。 ```sh awk '{gsub("old", "new"); print}' filename ``` 2. **条件判断**: 使用逻辑运算符`&&`(AND)、`||`(OR)进行条件组合。 ```sh awk -F: '...
awk内置函数还包括对字符串进行操作的功能,例如 substr、split、sub和gsub函数,分别用于获取子字符串、分割字符串到数组、字符串替换等。 使用awk时,模式匹配是一个非常重要的功能。模式可以是字符串或者正则...
特别是GAWK/NAWK的字符串函数,比如sub、gsub、match、以及变量RSTART和RLENGTH也被涵盖。 本手册是sed和awk学习者的宝贵资源,通过掌握手册中的知识,可以大幅提升文本处理的效率和自动化水平。
根据提供的文件标题、描述、标签以及部分内容,我们可以总结出与Sed和awk基本操作相关的知识点。Sed(Stream Editor)和 awk 是 Linux 操作系统中非常重要的文本处理工具,广泛应用于脚本编程、数据处理等领域。 ##...
下面我们将详细介绍`awk`的基本用法、常用参数、BEGIN和END块以及一些常见的函数。 **一、awk用法说明** 1. **默认分隔符**:当输入字段的分隔符是空格或制表符时,`-F`参数可以省略,awk会自动识别。 2. **过滤...
字符串函数如`sub()`和`gsub()`用于替换匹配的子串,`index()`找到子串的位置,`length()`计算字符串长度等。数学函数包括`cos()`、`sin()`、`sqrt()`等,还有`rand()`生成随机数,`int()`进行取整操作。 五、awk的...
2. **使用 `awk sub` 和 `awk gsub`:** ```bash $ echo $var | awk '{sub("","_", $0); printf("%s\n", $0);}' get_thelengthofme ``` `awk sub` 用于替换字符串中的第一次匹配,而 `awk gsub` 用于全局替换...
通过以上内容,我们可以看到Shell脚本、Awk和Sed在处理文本数据时的强大功能和灵活性。它们不仅可以帮助我们进行基本的数据检索和格式化,还可以实现复杂的文本分析和数据转换任务。掌握这些工具,对于任何需要频繁...
4. **内容替换**:如果找到匹配的模式,脚本会使用`sub`或`gsub`方法进行替换。`sub`替换第一次出现的匹配项,而`gsub`替换所有匹配项。 5. **写入文件**:替换后的新内容需要被写回文件。这可以通过创建一个新的...