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\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

基本就是這么一些了。。其實我一直感覺很像C程序…


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM