<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 ‘/101/’ file 显示文件file中包含101的匹配行。 awk ‘/101/,/105/’ file awk ‘$1 == 5′ file awk ‘$1 == “CT”‘ file 注意必须带双引号 awk ‘$1 * $2 >100 ‘ file awk ‘$2 >5 && $2<=15' file
LINUX的awk和sed的常用用法 LINUX的awk和sed的常用用法
因为遇到了awk问题,所以找到这个小结,共享一下
awk 工具用法说明 awk 工具用法说明 awk 工具用法说明
awk学习awk学习awk学习awk学习awk学习awk学习awk学习
sed,awk用法,sed,awk是linux开发必备知识,公司常用技术,很好很强大的sed和awk用法介绍,绝对值得您收藏学习。好资源大家一起分享!
awk用法小结 - - - by ruson 2006.4 NTU 1. awk非常适合于结构化的文本文件(行、列数据)复杂处理。相对于sed而言,它可进行复杂的编程处理,并且可以产生复杂的报表输出。 2. awk通常有三个版本,旧awk、nawk...
linux bash 之awk,awk的详尽用法
(awk 指令并不多, 且其中之大部分与 C语言中之用法一致, 本手册中对该类指令之语法及特性 不再加以繁冗的说明, 读者若欲深究,可自行翻阅相关的 C 语言书籍) 2. awk概述 为什么使用awk awk 是一种程序语言. 它具有...
windows 下的awk 命令工具
MOXA_AWK-3121配置方法及要点说明
学习和理解AWK的最佳书籍 一致这本书是学习awk的最好书籍,网上下不到的,国内也买不到。国家图书馆和北京大学图书馆都有。强烈建议所有想学awk的同志们阅读(会有很多awk语言之外的启迪) 偶然机会得到,不敢独享...
把实际应用中一些常用的awk的用法进行了总结,包括多文件操作,与shell之间的相互调用等
使用awk 撰写程序比起使用其它语言更简洁便利且节省时间. awk 还具有一些 内建功能, 使得awk 擅于处理具数据行(Record), 字段(Field) 型态的资料; 此外, awk 内建有pipe 的功能, 可将处理中的数据传送给外部的Shell...
awk命令常用用法整理;加入了自己在平时运用中的实例,比如通过查询数据库生成csv文件或insert语句。将markdown文件转换成了html文件。 awk有许多强大的字符串函数 gsub(r,s) #在整个$0中,用s代替r gsub(r,s,t) 在...
sed和awk单行命令比较,通过例题来比较,详细说明了sed和awk的区别
awk用法__都是例子 awk用法__都是例子 awk用法__都是例子 awk用法__都是例子
awk学习快速入门、基本用法、高级应用。基本入门说明使用的基本方法;高级应用主要是管道的用法
MOXA_AWK-3121 配置方法及要点说明.pdf 挺好的,详细
man 中文awk版内容包括:语法、AWK变量、操作符、语句的编写,数组和函数的书写内容。