awk函数sub/gsub

3392阅读 0评论2012-05-05 linux_kaige
分类:Python/Ruby

-bash-3.2$ awk '{ split( "20:18:00", time, ":" ); print time[2] }'

-bash-3.2$ awk '{ split( "20:18:00", time, ":" ); print time[2] }' feng.txt 
18
18
18
18
18
18
-bash-3.2$ awk 'BEGIN{ split( "20:18:00", time, ":" ); print time[2] }'
18
-bash-3.2$ wc -l feng.txt 
6 feng.txt
-bash-3.2$ 
-bash-3.2$ cat feng.txt 
k   2012-1-3 13:00:46
a   2012-1-3 18:07:59
d   2012-1-3 18:07:59
b   2012-1-3 9:01:48 
b   2012-1-3 13:00:46
b   2012-1-3 18:07:59
-bash-3.2$ cat feng.txt |awk '{gsub(/2012/,"yangkai")print }'
awk: {gsub(/2012/,"yangkai")print }
awk:                        ^ syntax error
-bash-3.2$ cat feng.txt |awk '{gsub(/2012/,"yangkai");print }'
k   yangkai-1-3 13:00:46
a   yangkai-1-3 18:07:59
d   yangkai-1-3 18:07:59
b   yangkai-1-3 9:01:48 
b   yangkai-1-3 13:00:46
b   yangkai-1-3 1
-bash-3.2$ cat feng.txt |awk '{{gsub(/1/,"yk"),$3}print }'
awk: {{gsub(/1/,"yk"),$3}print }
awk:                 ^ syntax error
-bash-3.2$ cat feng.txt |awk '{gsub(/1/,"yk"),$3};print }'
awk: {gsub(/1/,"yk"),$3};print }
awk:                ^ syntax error
awk: {gsub(/1/,"yk"),$3};print }
awk:                     ^ syntax error
-bash-3.2$ cat feng.txt |awk '{gsub(/1/,"yk"),$3}print }'
awk: {gsub(/1/,"yk"),$3}print }
awk:                ^ syntax error
awk: {gsub(/1/,"yk"),$3}print }
awk:                    ^ syntax error
-bash-3.2$ cat feng.txt |awk '{gsub(/1/,"yk",$3);print }'
k 2012-1-3 yk3:00:46
a 2012-1-3 yk8:07:59
d 2012-1-3 yk8:07:59
b 2012-1-3 9:0yk:48
b 2012-1-3 yk3:00:46
b 2012-1-3 yk8:07:59
-bash-3.2$ 
sub函数匹配记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候.
gsub函数作用如sub,但它在整个文档中进行匹配。
-bash-3.2$ cat feng.txt |awk '{sub(/1/,"yk",$3);print }'
k 2012-1-3 yk3:00:46
a 2012-1-3 yk8:07:59
d 2012-1-3 yk8:07:59
b 2012-1-3 9:0yk:48
b 2012-1-3 yk3:00:46
b 2012-1-3 yk8:07:59
-bash-3.2$ cat feng.txt |awk '{sub(/1/,"yk");print }'
k   20yk2-1-3 13:00:46
a   20yk2-1-3 18:07:59
d   20yk2-1-3 18:07:59
b   20yk2-1-3 9:01:48 
b   20yk2-1-3 13:00:46
b   20yk2-1-3 18:07:59
-bash-3.2$ 
length函数返回记录的字符数。
-bash-3.2$ awk 'BEGIN{print length("yangkai")}'
7
-bash-3.2$ 

 awk  'BEGIN{FS=OFS=":"}{if($3<=50)$3="500";print} 
上一篇:xmanager 启动gnome
下一篇:术语表