一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Linux|Centos|Ubuntu|系統(tǒng)進(jìn)程|Fedora|注冊(cè)表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務(wù)器之家 - 服務(wù)器系統(tǒng) - Linux - 使用awk輸出文本中的字段和列的方法

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

2019-06-09 13:09Linux之家服務(wù)器之家 Linux

一些朋友不知道如何使用 awk 輸出文本中的字段和列;今天小編就為大家?guī)?lái)使用awk輸出文本中的字段和列的方法;有需要的朋友一起去看看吧

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

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

awk 中的字段分隔符的工作原理如下:當(dāng)讀到一行輸入時(shí),將它按照指定的 IFS 分割為不同字段,第一組字符就是字段一,可以通過(guò) $1 來(lái)訪問(wèn),第二組字符就是字段二,可以通過(guò) $2 來(lái)訪問(wèn),第三組字符就是字段三,可以通過(guò) $3 來(lái)訪問(wèn),以此類推,直到最后一組字符。

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

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

# vi tecmintinfo.txt

# cat tecmintinfo.txt

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

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

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

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

TecMint.comisthe

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

字段一是 “TecMint.com”,可以通過(guò) $1 來(lái)訪問(wèn)。 字段二是 “is”,可以通過(guò) $2 來(lái)訪問(wèn)。 字段三是 “the”,可以通過(guò) $3 來(lái)訪問(wèn)。

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

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

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

TecMint.com is the

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

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

例 2:讓我們?cè)倏匆粋€(gè)例子,用到了一個(gè)名為 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

如果你只想輸出購(gòu)物清單上每一個(gè)物品的單價(jià),你只需運(yùn)行下面的命令:

$ 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 還有一個(gè) printf 的命令,可以幫助你將輸出格式化。

使用 printf 來(lái)格式化 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 過(guò)濾文本或字符串時(shí),字段編輯的功能是非常重要的。它能夠幫助你從一個(gè)表的數(shù)據(jù)中得到特定的列。一定要記住的是,awk 中 ($) 操作符的用法與其在 shell 腳本中的用法是不同的!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日日艹 | 18韩国美女vip视频7 | 日韩免费毛片视频杨思敏 | 亚洲一区二区三区免费视频 | 国产午夜免费不卡精品理论片 | 国产精品免费视频能看 | 亚洲国产成人精品无码区99 | 欧美一级v片| 亚洲精品在线免费看 | 日本人添下面的全过程 | 青青久久久国产线免观 | 午夜精品区 | 国产成人高清亚洲一区91 | 日本96在线精品视频免费观看 | 日韩精品福利视频一区二区三区 | 亚洲精品在线免费看 | 成年人视频在线免费观看 | 俄罗斯极品h在线 | 成人aqq| 日韩性大片免费 | 男女车车好快的车车免费网站 | 国产一区在线免费观看 | 窝窝午夜精品一区二区 | 欧洲美女啪啪 | videos欧美肥婆 | 国产欧美日韩亚洲精品区2345 | 极品虎白女在线观看一线天 | 欧美一级高清片免费一级 | 爱爱小视频免费看 | 亚洲国产成人久久综合一区 | 丁香五香天堂 | 国产精品第2页 | 色图片小说 | 国产成人影院 | 国产一级黄毛片 | 国产麻豆精品原创 | 国产精品一区二区久久 | 久久精品午夜一区二区福利 | meyd–456佐山爱在线播放 | 99久久精品国产片久人 | japaneseles女同专区 |