iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
1
自我挑戰組

30天菜鳥學 Linux 系列 第 13

13天-學習 awk 處理文本文件神器 part 2

今天進度 :


筆記 :

欄列變數 :

變數名稱 代表意義
NF 每一行 ($0) 擁有的欄位總數
NR 目前 awk 所處理的是『第幾行』資料
FS 目前的分隔字元,預設是空白鍵
test@test:~$ last -n 5| awk '{print $1 "\t 第幾行: " NR "\t 第幾欄: " NF}'
test	 第幾行: 1	 第幾欄: 10
test	 第幾行: 2	 第幾欄: 10
test	 第幾行: 3	 第幾欄: 10
test	 第幾行: 4	 第幾欄: 10
test	 第幾行: 5	 第幾欄: 10
test	 第幾行: 6	 第幾欄: 0
wtmp	 第幾行: 7	 第幾欄: 7

實現加總欄位

test@test:~$ vi demo2.txt
Name    1st     2nd     3th
A	10		20		20
B	10		20		20
C	10		20		20

test@test:~$ cat demo2.txt | \
> awk 'NR==1{printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total" }
> NR>=2{total = $2 + $3 + $4
> printf "%10s %10d %10d %10d %10.2f\n", $1, $2, $3, $4, total}'
      name        1st        2nd        3th      Total
         A         10         20         20      50.00
         B         10         20         20      50.00
         C         10         20         20      50.00

awk 小總結筆記 :

  • awk 適合處理小型的數據資料處理
  • awk裡的正則也不是完整的正則
  • 實際生產中不要用太複雜的 awk 腳本,有特別複雜的需求,建議用 python 。

補充 :
另外分享今天看到有人居然用 awk 實現一個簡單資料庫 用 awk 实现一个关系型数据库 - Fantasy

太厲害了 OoO +


上一篇
12天-學習 awk 處理文本文件神器 part 1
下一篇
14天-學習 awk 處理文本文件神器 part 3
系列文
30天菜鳥學 Linux 59
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言