歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 文本處理工具AWK詳解

文本處理工具AWK詳解

日期:2017/2/28 14:49:06   编辑:Linux教程

awk簡介

awk: 中文意思是報告生成器 能夠根據我們輸入的信息,將信息格式化以後顯示,將定義好的信息以比較美觀(直觀)的方式顯示出來出現比較早,繼而出現了new awk(nawk)在windows上實現,gawk, awk實現在linux上。awk是一種編程語言,用於在linux/unix下對文本和數據進行處理。數據可以來自標准輸入、一個或多個文件,或其它命令的輸出。它支持用戶自定義函數和動態正則表達式等先進功能,是linux/unix下的一個強大編程工具。它在命令行中使用,但更多是作為腳本來使用。awk的處理文本和數據的方式是這樣的,它逐行掃描文件,從第一行到最後一行,尋找匹配的特定模式的行,並在這些行上進行你想要的操作。如果沒有指定處理動作,則把匹配的行顯示到標准輸出(屏幕),如果沒有指定模式,則所有被操作所指定的行都被處理。awk分別代表其作者姓氏的第一個字母,分別是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供

了Bell實驗室和GNU的一些擴展。下面就對awk進行介紹。

awk使用的基本格式:

# awk [options] 'script' file1 file2, ...
# awk [options] 'PATTERN { action }' file1 file2, ...細化了上面的組合
常用的命令:print(輸出), printf(打印)

awk工作過程

根據我們所定義的模式,一次從文件中讀取一行文本,awk會對取出的文本做相應的切片,將每一行按照分隔符進行切割,假如我們有一行文本: this is a test.它會使用空白字符當做分隔符,將它們各個分開,切割成了四個片,分別為: this is a test.這四個片,可以使用變量,分別對應為$1,$2,$3,$4代表四個切割片,下面就做一個演示,看如何實現awk的強大功能

一、awk的輸出:print

print的使用格式:
print item1, item2, ...

輸出要點:

1、各項目之間使用逗號隔開,而輸出時則以空白字符分隔;

2、輸出的item可以為字符串或數值、當前記錄的字段(如$1)、變量或awk的表達式;數值會先轉換為字符串,而後再輸出;

3、print命令後面的item可以省略,此時其功能相當於print $0, 因此,如果想輸出空白行,則需要使用print "";

實例分析:

顯示整個文本(注意,這裡只是測試,所以只有一行)
# awk '{print $N}' test.txt
this is a test.
# awk '{print $0}' test.txt
this is a test.
顯示文本的一行中的第一個參數
# awk '{print $1}' test.txt
this
顯示文本的一行中的第二個參數
# awk '{print $2}' test.txt
is
顯示文本的一行中的第四個參數
# awk '{print $4}' test.txt
test.
顯示文本的一行中的第一與第二個個參數
# awk '{print $1,$2}' test.txt
this is
顯示文本的一行中的第一個與第二個參數,中間可以加#號
# awk 'BEGIN{OFS="#"}{print $1,$2}' test.txt
this#is
顯示文本中的各個參數,還可以加修飾符
# awk 'BEGIN{OFS=":"}{print $1,$2,$3,$4}' test.txt
this:is:a:test.
顯示文本中的參數,還可以加修飾符,還可以加字符串
# awk 'BEGIN{OFS=":"}{print $1,"hello",$2}' test.txt
this:hello:is
輸出三行,注意換行需要加\n
# awk 'BEGIN { print "line one\nline two\nline three" }'
line one
line two
line three

Copyright © Linux教程網 All Rights Reserved