awk字符串函数(printf格式化输出) -- shell

awk有许多强大的字符串函数

gsub(r,s)                              在整个$0中,用s代替r

gsub(r,s,t)                           在整个t中,用s代替r #替换字符串

index(s,t)                             返回s中字符串t的第一位置 #未用过

length(s)                               返回s长度 #c语言strlen

match(s,r)                             测试s是否包含匹配r的字符串 #c语言strcmp

split(s,a,fs)                         使用分隔符fs将字符串s划分为指定序列a

sprint(fmt,exp)                       输出经过fmt格式化后的exp

substr(s,p)                            返回字符串s中从p开始的后缀部分

substr(s,p,n)                         返回字符串s中从p开始的长度为n的后缀部分 #用截取第一个字符串和获取某一段字符串

 

printf

-                                      左对齐

Width                                  域的步长,用0表示0步长

.prec                                  最大字符串长度,或小数点右面的位数

%c                                     ASCII字符

%d                                     整型

%e                                     科学计数法

%f                                     浮点型 #使用小数点后2位%.2f (用于除法后)

%g                                     awk决定哪种浮点数转换e或者f

%o                                     八进制

%s                                     字符串

%x                                     十六进制


例一:

[root@localhost shell]# awk -F ":" ‘gsub(/502/,213213213) {print$0}‘ passwd

test:x:213213213:213213213::/home/test:/bin/bash

[root@localhost shell]#

 

例二:

[root@localhost shell]# awk -F ":" ‘gsub(/502/,213213213,$3) {print$0}‘ passwd

test x 213213213 502  /home/test /bin/bash

[root@localhost shell]#

 

例三:

[root@localhost shell]# awk ‘BEGIN {print index("test","t")}‘ passwd

1

[root@localhost shell]#

 

例四:

[root@localhost shell]# awk -F ":" ‘{if($1=="test"){print$0,length($1)}}‘ passwd

test:x:502:502::/home/test:/bin/bash 4

[root@localhost shell]#

  

例五:

[root@localhost shell]# awk -F ":" ‘{if($1=="test") {print substr($1,1,3)}}‘ passwd

tes

[root@localhost shell]#

 

例六:

[root@localhost shell]# awk ‘BEGIN {STR="a few good men"} END{print substr(STR,7)}‘ passwd

good men

[root@localhost shell]#

 

例七:

[root@localhost shell]# STR=test.txt

[root@localhost shell]# echo $STR

test.txt

[root@localhost shell]# echo $STR | awk ‘{print substr($0,1,4)}‘

test

[root@localhost shell]# echo $STR | awk ‘{print substr($0,6)}‘

txt

[root@localhost shell]#

 

 

例一:

 

[root@localhost shell]# awk -F ":" ‘{print $1,$3,$7}‘ passwd

rpcuser 29 /sbin/nologin

nfsnobody 65534 /sbin/nologin

sshd 74 /sbin/nologin

haldaemon 68 /sbin/nologin

avahi-autoipd 100 /sbin/nologin

xfs 43 /sbin/nologin

gdm 42 /sbin/nologin

mysql 500 /sbin/nologin

mysql1 501 /sbin/nologin

test 502 /bin/bash

test1 503 /bin/bash

 
[root@localhost shell]# awk -F ":" ‘{printf " %-15s %-15s %s\n",$1,$3,$7}‘ passwd
 rpcuser         29              /sbin/nologin
 nfsnobody       65534           /sbin/nologin
 sshd            74              /sbin/nologin
 haldaemon       68              /sbin/nologin
 avahi-autoipd   100             /sbin/nologin
 xfs             43              /sbin/nologin
 gdm             42              /sbin/nologin
 mysql           500             /sbin/nologin
 mysql1          501             /sbin/nologin
 test            502             /bin/bash
 test1           503             /bin/bash
[root@localhost shell]#
 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。