使用 AWK 在文件中印出字段和列

Awk 中的默認 IFS 是製表符和空格。
根據 IFS,我們可以將第一組自段,以 $1 表示以此類推。


測試檔案,請自行新增。

[root@awk ~]# awk '//{print $1 $2 $3}' fileinfo.txt | less
Ihearthe
Ihearfar
butIdon’t
Sincerelycallingfor

WhenIwas
Onlyaftergoodbye
whydidn’tI
Isthebest

maybewewere
busyaswe
busychasingshooting
I hear the = {$1 , $2 , $3}
以每列的前三個空白打印,基於 IFS 空白做分割,至於它打印出來沒空白,是預設的。

要用字段之間以空格清楚的輸出,您需要添加(,)。
[root@awk ~]# awk '//{print $1 ,$2, $3}' fileinfo.txt | less
I hear the
I hear far
but I don’t
Sincerely calling for

When I was
Only after goodbye
why didn’t I
Is the best

maybe we were
busy as we
busy chasing shooting


以下是以一個類似於買物品清單來做範例。

同理用上面的方式,也能有結果。
[root@awk ~]# awk '//{print $1 ,$2, $3}' list.txt
No Item_Name Unit_Price
1 Mouse #20,000
2 switch #500,000
3 RAM_Chips #150,000
4 Ethernet_Cables #30,000
5 Router #500,000
但是它空格就沒上面整齊了。

使用 printf,幫助你格式化輸出。
[root@awk ~]# awk '//{printf "%-3s %-20s %s\n",$1 ,$2 ,$3}' list.txt
No  Item_Name            Unit_Price
1   Mouse                #20,000
2   switch               #500,000
3   RAM_Chips            #150,000
4   Ethernet_Cables      #30,000
5   Router               #500,000
記住在 Awk 中使用($)運算符與 shell script中的不同。

留言

熱門文章