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\n",$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
