awk 命令使用入門

2022-02-24 17:36:20 字數 2264 閱讀 1622

linux 下處理和分析文字檔案內容,awk 命令是乙個強有力的工具。特別是檔案內容是以行和列的形式排版的時候,awk 就是命令列界的 excel 啊!

簡單的 awk 命令可以直接在命令列中使用,複雜情況下就得寫 awk 指令碼來解決了。

awk 命令基本用法:

awk 'pattern ' input-file > output-file

這個命令的簡單解釋就是:遍歷輸入檔案 input-file 內容的每一行,在符合模式 pattern 的行上執行動作 action,並將執行結果寫入 output-file 檔案。

如果省略了 pattern 模式的話,每一行都將執行動作 action。例如:

awk '' table1.txt > output1.txt

這句命令的意思就是輸出檔案 table1.txt 每行內容的第五列到檔案 output1.txt。預設情況下,每列以空格符或者 tab 符(也叫做空白符)分割。因此,如果檔案 table1.txt 內容是這樣的話:

1, justin timberlake, title 545, price $7.30

2, taylor swift, title 723, price $7.90

3, mick jagger, title 610, price $7.90

4, lady gaga, title 118, price $7.30

5, johnny cash, title 482, price $6.50

6, elvis presley, title 335, price $7.30

7, john lennon, title 271, price $7.90

8, michael jackson, title 373, price $5.50

那麼,執行該命令後檔案 output1.txt 的內容便如下:

545,

723,

610,

118,

482,

335,

271,

373,

如果分隔符不是空格符或者 tab 符的話,你可以在命令中指定它:

awk -f, '' table1.txt > output1.txt

該條命令就會選擇檔案 table1.txt 內容的每行的第三列輸出到檔案 output1.txt 中,其中每列的分隔符為逗號。所以,檔案 output1.txt 的內容便是這樣了:

title 545

title 723

title 610

title 118

title 482

title 335

title 271

title 373

在花括號中間的內容即(print $3)叫做**區。如果在**區前面放乙個條件表示式的話,**區的**只會在條件表示式成立時執行:

awk '$7=="\$7.30" ' table1.txt > output1.txt

這條命令的意思就是,只有某行第七列等於 $7.30 時,才會將該行第三列內容輸出到檔案 output1.txt 中。$7.30 前的反斜槓是為了阻止系統將其解釋為變數 $7,加上反斜槓後其僅僅被解釋為普通字串。該命令輸出如下:

timberlake,

gaga,

presley,

我們也可以把乙個正規表示式當做條件表示式。例如:

awk '/30/ ' table1.txt > output1.txt

在兩個反斜槓之間的內容便是正規表示式。也就是說,只有某行包含字串「30」時,才會將該行的第三列輸出到檔案 output1.txt 中。其輸出如下:

timberlake,

gaga,

presley,

如果檔案內容某列全數字的話也可以使用它們進行計算:

awk '' table1.txt

現在第一列我們使用 $1,第二列使用 $2,那麼有沒有 $0 呢?當然是有的啦,$0 就表示乙個完整的行內容,還有變數 nf 就表示每行的列數呢!所以所有檔案 table1.txt 每行每列都是數字的話,我們可以這樣進行每行累加求和:

awk '' table1.txt

當然了,說起 awk 我們不用忘了它的好兄弟 sed 命令,那麼下次就來說說 sed 命令吧!

awk命令使用

awk是linux下很有用的列編輯工具。示例如下 檔案tran map.txt內容如下 tr zhuanzhang sa unknown 1.組織字串。將第一列以字串形式列印出來 awk tran map.txt tr sa 2.形成格式化 將第一列值轉換為第二列值 採用檔案指令碼方式。指令碼檔案為...

awk命令使用

linux awk command info awk是乙個行編輯器 和sed是互補關係 主要功能是擷取,它類似於cut的功能,但是功能更強大 不單可以擷取還可以運算 排序 還支援shell語句等一些功能 awk語法 awk option filename awk 認為每一行都是一條記錄,記錄與記錄的...

awk命令使用

awk 格式化輸出,報告生成器 格式 awk 選項 程式 檔案 選項 f 指定分隔符 space 多個分隔符 v 變數賦值內建變數 ofs 輸出字段分隔符 列 ofs rs 輸入行分隔符 ors 輸出行分隔符 nf 字段數量 列 nf 1 即倒數第二字段 nr 記錄數量 行 nr 4 即第四行 自定...