主頁 > 知識庫 > 使用awk輸出文本中的字段和列的方法

使用awk輸出文本中的字段和列的方法

熱門標簽:琿春市地圖標注app 安陽百應電銷機器人加盟 山東企業(yè)電銷機器人價格 潮州地圖標注 公司400電話辦理價格 百度地圖標注開鎖電話 依蘭縣地圖標注app 百度中國地圖標注中心 pageadm實現(xiàn)地圖標注

首先我們要知道,awk 能夠自動將輸入的行,分隔為若干字段。每一個字段就是一組字符,它們和其他的字段由一個內(nèi)部字段分隔符分隔開來。

如果你熟悉 Unix/Linux 或者懂得 bash shell 編程,那么你應該知道什么是內(nèi)部字段分隔符(IFS)變量。awk 中默認的 IFS 是制表符和空格。

awk 中的字段分隔符的工作原理如下:當讀到一行輸入時,將它按照指定的 IFS 分割為不同字段,第一組字符就是字段一,可以通過 $1 來訪問,第二組字符就是字段二,可以通過 $2 來訪問,第三組字符就是字段三,可以通過 $3 來訪問,以此類推,直到最后一組字符。

為了更好地理解 awk 的字段編輯,讓我們看一個下面的例子:

例 1:我創(chuàng)建了一個名為 tecmintinfo.txt 的文本文件。

# vi tecmintinfo.txt

# cat tecmintinfo.txt

在 Linux 上創(chuàng)建一個文件

然后在命令行中,我試著使用下面的命令從文本 tecmintinfo.txt 中輸出第一個,第二個,以及第三個字段。

$ awk '//{print $1 $2 $3 }' tecmintinfo.txt

TecMint.comisthe

從上面的輸出中你可以看到,前三個字段的字符是以空格為分隔符輸出的:

字段一是 “TecMint.com”,可以通過 $1 來訪問。 字段二是 “is”,可以通過 $2 來訪問。 字段三是 “the”,可以通過 $3 來訪問。

如果你注意觀察輸出的話可以發(fā)現(xiàn),輸出的字段值并沒有被分隔開,這是 print 函數(shù)默認的行為。

為了使輸出看得更清楚,輸出的字段值之間使用空格分開,你需要添加 (,) 操作符。

$ awk '//{print $1, $2, $3; }' tecmintinfo.txt

TecMint.com is the

需要記住而且非常重要的是,($) 在 awk 和在 shell 腳本中的使用是截然不同的!

在 shell 腳本中,($) 被用來獲取變量的值。而在 awk 中,($) 只有在獲取字段的值時才會用到,不能用于獲取變量的值。

例 2:讓我們再看一個例子,用到了一個名為 my_shoping.list 的包含多行的文件。

No Item_Name Unit_Price Quantity Price

1 Mouse #20,000 1 #20,000

2 Monitor #500,000 1 #500,000

3 RAM_Chips #150,000 2 #300,000

4 Ethernet_Cables #30,000 4 #120,000

如果你只想輸出購物清單上每一個物品的單價,你只需運行下面的命令:

$ awk '//{print $2, $3 }' my_shopping.txt

Item_Name Unit_Price

Mouse #20,000

Monitor #500,000

RAM_Chips #150,000

Ethernet_Cables #30,000

可以看到上面的輸出不夠清晰,awk 還有一個 printf 的命令,可以幫助你將輸出格式化。

使用 printf 來格式化 Item_Name 和 Unit_Price 的輸出:

$ awk '//{printf "%-10s %s/n",$2, $3 }' my_shopping.txt

Item_Name Unit_Price

Mouse #20,000

Monitor #500,000

RAM_Chips #150,000

Ethernet_Cables #30,000

總結(jié)

使用 awk 過濾文本或字符串時,字段編輯的功能是非常重要的。它能夠幫助你從一個表的數(shù)據(jù)中得到特定的列。一定要記住的是,awk 中 ($) 操作符的用法與其在 shell 腳本中的用法是不同的!

標簽:公主嶺 香港 晉中 常德 林芝 連云港 三明 呼和浩特

巨人網(wǎng)絡通訊聲明:本文標題《使用awk輸出文本中的字段和列的方法》,本文關(guān)鍵詞  使用,awk,輸出,文本,中的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用awk輸出文本中的字段和列的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于使用awk輸出文本中的字段和列的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章