awk内置字符串函数 awk 格式化输出

i249 ~ # ps -efl|head -1|awk '$2~/S/{print $2}'
S
i249 ~ # ps -efl|awk '$2~/S/{print $2}'
S
S
S
S

printf

-                                      左对齐

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

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

%c                                     ASCII字符

%d                                     整型

%e                                     科学计数法

%f                                     浮点型

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

%o                                     八进制

%s                                     字符串

%x                                     十六进制

 例一:

 i161 admin # df -Th|awk '{print $1,$5}'
Filesystem Avail
rootfs 23G
/dev/root 23G
tmpfs 16G
rc-svcdir 956K
cgroup_root 10M
udev 9.8M
shm 16G
/dev/md4 2.5T

i161 admin # df -Th|awk '{printf "%-15s %-15s ",$1,$5}'
Filesystem          Avail          
rootfs                23G            
/dev/root           23G            
tmpfs                16G            
rc-svcdir            956K           
cgroup_root       10M            
udev                  9.8M           
shm                  16G            
/dev/md4           2.5T

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

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

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

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

length(s)                               返回s长度

match(s,r)                             测试s是否包含匹配r的字符串

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

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

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

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

例一:

[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

基本就是这么一些了。。其实我一直感觉很像C程序…
原文地址:https://www.cnblogs.com/itcomputer/p/4630851.html