[root@localhost ~]# cat passwd root:x:0:0:root:/root:/bin/bash root:0:0:root:/root:/bin/bash oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:4294967294:4294967294:Anonymous NFS User:/var/lib/nfs:/sbin/nologin avahi-autoipd:x:100:104:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin u02:x:501:500::/home/u02:/bin/bash apache:x:48:48:Apache:/var/www:/sbin/nologin 要得到文件名,行号,每行的列数,内容。 [root@test03 scripts]# awk -F ':' '{print "filename:"FILENAME"\t""linenumber:"NR"\t""columns:"NF"\t""linecontent:"$0}' passwd [root@localhost ~]# awk -F':' '{printf("filename:%s\tlinenumber:%s\tcolumns:%s\tlinecontent:%s\n",FILENAME,NR,NF,$0)}' passwd filename:passwd linenumber:1 columns:7 linecontent:root:x:0:0:root:/root:/bin/bash filename:passwd linenumber:2 columns:6 linecontent:root:0:0:root:/root:/bin/bash filename:passwd linenumber:3 columns:7 linecontent:oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin filename:passwd linenumber:4 columns:7 linecontent:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin filename:passwd linenumber:5 columns:7 linecontent:rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin filename:passwd linenumber:6 columns:7 linecontent:nfsnobody:x:4294967294:4294967294:Anonymous NFS User:/var/lib/nfs:/sbin/nologin filename:passwd linenumber:7 columns:7 linecontent:avahi-autoipd:x:100:104:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin filename:passwd linenumber:8 columns:7 linecontent:u02:x:501:500::/home/u02:/bin/bash filename:passwd linenumber:9 columns:7 linecontent:apache:x:48:48:Apache:/var/www:/sbin/nologin
print和printf
awk中同时提供了print和printf两种打印输出的函数。
其中print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。
printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。