linux awk 命令常見用法

2022-01-29 06:11:53 字數 2510 閱讀 1879

在 linux 系統中,有三個強大的文字分析處理工具:grep  sed  awk,其中:

grep   用於搜尋文字內容      => 

linux grep 命令常見用法

sed    用於編輯文字內容       => 

linux sed  命令常見用法

awk   用於處理和生成報表    =>

linux awk 命令常見用法

awk 的工作原理是將檔案內容逐行讀入,然後以每一行中的空格為分隔符將每行資料切分成幾列,再對每列的元素進行各種分析處理。

下面結合例項簡單介紹 awk 命令常用的幾種格式:

假設檔案 form.txt 中有如下內容:

num  name  company  product12

jack alibaba taobao

3 pony tencent wechat

1. 列印第二列和第三列:

awk''

form.txt

>>

namecompany

jackalibaba

ponytencent

awk 的命令都寫在單引號內,再用花括號括起來,這裡的 $2 $3 分別表示第二列和第三列, $0 則表示整行;

可以看到第二列和第三列就列印出來了,但是兩列資料緊貼在一起,如果我們希望以製表符來分隔開:

awk''

form.txt

>>

name company

jack alibaba

pony tencent

注意製表符 \t 需要用雙引號括起來

2. 列印出第 2,3,4 行的第二列和第三列,以製表符分隔開:

awk

'/^[0-9]/

'form.txt

jack alibaba

pony tencent

這裡用到了 awk 的一種常用語法: awk  『 樣式{命令}』  file 

表示從檔案 file 中取出那些符合 「樣式」 的行,然後對這些行執行{命令}

這裡的 「樣式」 一般是正規表示式,用定界符 / / 括起來,命令依然是用花括號括起來

所以上面這個例子就表示:取出那些以數字開頭的行,列印這些行的第二列和第三列,並以製表符分隔開

3. 列印出前三行的第二列和第三列:

awk' }

'form.txt

>>name company

jack alibaba

這裡用到了 awk 程式設計,在花括號內寫了一小段程式,awk 程式設計基本都是借鑑 c 語言,所以 c 語言中常見的 if  for while 等控制結構都可以直接借用。

這個例子中還用到了awk 內嵌特殊變數 nr,nr 記錄的是當前行號,awk還有很多其他的內嵌變數,比如 nf 表示當前行有多少列。

在數字後端設計中,經常需要從一些 report 中抓出某幾行的某一列資料,比如 timing report 中的 cell name 或者 pin name,此時就很適合用這種簡短的 awk 程式設計來處理。

4. begin end 語句塊

使用 awk 命令時也經常會用到 begin / end 語句塊,例如:

列印第二列和第三列,且在列印第一行之前先列印出字串「 start:」, 列印完最後一行後接著列印出字串 「 end " :

awk

'begin end

'form.txt

>>start:

name company

jack alibaba

pony tencent

end

5. 使用 「非空格字元」 切分列

預設情況下,awk 命令讀入一行資料後,會用這行中的空格將整行資料切分成若干列,但是有些資料不是以空格作為間隔的,比如下面這組:

num,name,company,product12

,jack,alibaba,taobao

3,pony,tencent,wechat

此時,如果想要列印出第二列和第三列,就需要使用選項 「 -f 」 來指定分隔符:

awk  -f","

''form.txt

>>name company

jack alibaba

pony tencent

這裡的選項  -f ","  就表示以每行資料中的逗號為分隔符,來切分資料。

awk 命令的用法非常多,可以實現非常複雜的報表分析處理,

這裡只介紹了最常見的幾種用法,

gnu awk 官網:

|------------------------------------------|

Linux AWK命令用法

一 awk是乙個非常強大的文字處理命令。二 命令格式如下 awk f f v begin end file f f v 大引數,f指定分隔符,f呼叫指令碼,v定義變數 var value 引用 塊 begin 初始化 塊,在對每一行進行處理之前,初始化 主要是引用全域性變數,設定fs分隔符 匹配 塊...

Linux awk命令列用法

awk是處理文字檔案的乙個應用程式,幾乎所有 linux 系統都自帶這個程式。它依次處理檔案的每一行,並讀取裡面的每乙個字段。對於日誌 csv 那樣的每行格式相同的文字檔案,awk可能是最方便的工具。awk其實不僅僅是工具軟體,還是一種程式語言。不過,本文只介紹它的命令列用法,對於大多數場合,應該足...

使用案例 Linux awk命令常見使用案例

1.awk簡介 awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。awk有3個不同版本 awk nawk和gawk,未作特別說明,一般指g...