歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux命令

Linux命令之awk命令使用介紹

Linux命令

介    紹:awk主要處理每一行的字段內的數據,默認分隔符:任意數量的空格或者任意數量的tab

用    法:

awk  '模式  操作'  file ...

1、awk  '/正則表達式/ {print ...}'  file ...   正則表達式相當於egrep中的正則

      注意:模式或者操作都是可選的,若省略操作(比如省略'{print $1}'),則正則模式匹配的整行 

下面兩種方式輸出結果一樣

$ cat file_a 
pa:11:a
sa:32:c
app:5:b
stort:1:d
pear:4:aa
hello:3:f

$ egrep '^a' file_a 
app:5:b

$ awk '/^a/ {print ___FCKpd___0}' file_a 
app:5:b

2、awk  '條件模式  操作' file ...

awk  -F: '$2==""'  /etc/passwd  打印以冒號分隔符的第二個字段可空的行

 等價於模式: $2 ~ /^$/  第二個字段匹配為空

                       $2 !~ /./            ------------>這裡的!~表示不匹配

                       length($2)==0

                       !($2 ~ /./)

 

  其他的模式:

                      NF == 10  10列

                      NF % 2 == 0    列數為偶數

                      length($0) > 20      

        例如:

                  awk  -F:  'length($0) > 30 {print substr($0, 1, 30)}' file  若行過長,則取這一行的前30個字符


3、awk的特殊用法,BEGIN和END兩者可以連用,也可以單獨使用

BEGIN在讀入第一行之前就被執行,可以使用BEGIN模式初始化變量,打印標題頭或通過指定變量FS設置字段分隔符。

END動作在處理完最後一行後執行。

例如:

           awk  'BEGIN {FS=":"} $2 != "vobile" {print $0} END {print NR}' file

注意:  awk  'BEGIN {FS=":"} $2 != "vobile"  END {print NR}' file    這樣是不對的 ,END前和後必須要有操作


4、awk中的算術變量和運算

      awk中的真正的實力是對輸入數據進行計算的能力,可以很容易的實現計數、累計求和、求平均數。最常用的是求各數字列的總和。

例如:求第二列之和

$ cat file_a 
pa:11:a
sa:32:c
app:5:b
stort:1:d
pear:4:aa
hello:3:f

$ awk 'BEGIN {FS=":"} {s = s + $2} END {print s}' file_a 
56



                      
 




Copyright © Linux教程網 All Rights Reserved