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]#