1. 程式人生 > >awk命令例子詳解

awk命令例子詳解

劃線 pan $1 空格 led 部分 分隔 線表 模式

awk -F: ‘{print "Number of dields: "NF}‘ passwd        字段分隔符設為冒號,所以每條記錄的字段數變成7;

awk ‘{print "Number of dields: "NF}‘ passwd          字段分隔符設為空格,所以每條記錄的字段數不一致;

awk -F: ‘{print $1}‘ passwd                 以冒號為分隔符打印出文本第一字段;

awk ‘{print $1}‘ passwd                   已空格符為分隔符打印出文本第一字段;

awk ‘/root/{print $0}‘ passwd                如果記錄模式中包含root,則打印該記錄($0);

awk ‘$1 ~ /nologin$/{print "The price is $" $1 "."}‘ passwd   如果第一個字段以nologin結尾,則打印雙引號之間的字符串、第一個字段($1)、和只含一個句點的字符;

awk ‘$1 ~ /[a-z][a-z]/{print $1}‘ passwd            第一個字段以兩個小寫字母結尾的,則打印該字段;

awk ‘$1 ~ /^root/{print $1 "is a super man."}‘ passwd     若第一個字段以root開頭的,則打印該字段並在後面接上字符串“is a super man.”,註意若要打印空格則應該把包含在字符串中;

awk ‘$1 !~ /e/{print $1,$2} ‘ passwd            如果第一個字段中不含模式e則打印該字段;

awk ‘$1 ~ /\.[7-9]+/‘ passwd                如果某條記錄的第一個字段包含一個句點,而且句點後是一個或多個7-9之間的數字,就打印該記錄;

awk ‘/^[rv]/{print $1}‘ passwd               打印以r或v開頭的模式中的第一字段;

awk ‘/e/‘ passwd                     打印記錄中有e的就打印整條記錄;

awk ‘/root/{print $1,"+++++",$2}‘ passwd           如果記錄中包含root則打印第一字段 +++++ 第二字段;

awk ‘{print "Number of fileds: " NF}‘ passwd        打印記錄中的字段值;

awk ‘{print $0}‘ passwd                 $0是打印當前的記錄;

awk ‘{print $2 $1}‘ passwd                第二字段與第一字段之間不用空格進行隔開;

awk ‘{print $2,$1}‘ passwd                 第二字段與第一字段之間用空格進行隔開;

awk ‘/^(root|sync)/‘ passwd                打印所有以root和sync開頭的行;

awk ‘/^root/‘ passwd                   打印所有以root開頭的行;

awk ‘root/’ passwd                   打印所有包含root的行;

gawk ‘/[[:lower:]]+n[[:space:]]+[[:digit:]]/‘ passwd      gawk搜索一個或多個小寫字母後面跟一個n後面再跟一個或多個空格然後是一個數字的模式,awk並不能識別POSIX增加的括號字符類;

awk ‘$1 !~ /nologin$/‘ passwd              顯示所有第一個字段非nologin結尾的;

awk ‘$1 ~ /[Ss]hd/‘ passwd                顯示所有在第一字段匹配到Shd或者shd的行;

nawk ‘/^[A-Z][a-z]+ /‘ passwd                匹配開頭以一個大寫字母跟一個或多個小寫字母,再跟一個空格的行(註意awk和gawk在此命令中是不區分大小寫的,nawk是區分大小寫的);

awk ‘/^root/‘ passwd                   匹配以root開頭的行;

awk ‘$1 < 4000‘ passwd

awk ‘$0 ~ /root/{print $0}‘ passwd

awk ‘/root/{print "Hello there, "$1}‘ passwd

awk -F: ‘/root/{print $0}‘ passwd

awk -F: ‘/root/{print $1,$2,$3,$4}‘ passwd

awk -F‘[ :\t]‘ ‘{print $1,$2,$3}‘ passwd

awk -F: ‘/root/{print $1,$2}‘ passwd

awk ‘{print NR,$1,$2}‘ passwd

awk ‘{print $0,NF}‘ passwd

awk ‘{print NR,$0}‘ passwd

nawk ‘{printf "The name is: %-15s ID is %8d\n",$1,$2}‘ passwd    要打印的字符串放在兩個引號之間。第一個格式說明符是%-15s,他對應的參數是$1,緊挨著控制穿的右半邊引號後面的那個逗號。百分號引出格式說明;短劃線表示左對齊,15s表示占15格的字符串。這條命令用來打印一個左對齊、占15格字符串,後面跟著字符串的ID和一個整數;格式%8d表示在字符串的這個位置打印$2的十進制整數值。這個整數占8格,向右對齊。

echo "UNIX" | awk ‘{printf "|%15s|\n",$1}‘       右對齊

echo "UNIX" | awk ‘{printf "|%-15s|\n",$1}‘       左對齊

awk ‘BEGIN{OFMT="%.2f";print 1.23456789,12E-2}‘        設置變量OFMT在打印浮點數時,只打印小數部分的前兩位。百分號表示接下來要定義格式;

awk ‘/root/{print "\t\tHave a nice day, "$1,$2 "!"}‘ passwd       在awk中!不用進行轉義,nawk中需要進行轉義;

nawk ‘/root/{print "\t\tHave a nice day, "$1,$2 "\!"}‘ passwd

date | awk ‘{print "Month: " $2 "\nYear: ",$6}‘

awk命令例子詳解