今天進度 : 鳥哥的 Linux 私房菜 -- 第 4 堂課:Linux 基礎檔案權限與基礎帳號管理
另外今天追蹤的 一級屠豬士 大神解答此問題 請問用 Regex 如何刪除行數是偶數的? 使用 awk
解析文字的技巧,先來研究這個。
先上阮一峰老師的評價,來源 awk 入门教程 - 阮一峰的网络日志
awk是处理文本文件的一个应用程序,几乎所有 Linux 系统都自带这个程序。
它依次处理文件的每一行,并读取里面的每一个字段。对于日志、CSV 那样的每行格式相同的文本文件,awk可能是最方便的工具。
應用1 : 可以跟其他 linux 指令很好的對接
舉例 : 原本ping指令長這樣
test@test:~$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=0.410 ms
64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=0.421 ms (DUP!)
64 bytes from 192.168.1.1: icmp_seq=2 ttl=63 time=0.383 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=63 time=0.393 ms (DUP!)
現在可以跟 awk
做結合,增加顯示時間點
test@test:~$ ping 192.168.1.1 | awk '{ print $0"\t" strftime("%Y:%m:%d-%H:%M:%S",systime()) fflush() } '>ping.log
test@test:~$ vi ping.log
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 2020:09:15-06:21:050
64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=0.390 ms 2020:09:15-06:21:050
64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=0.401 ms (DUP!) 2020:09:15-06:21:050
應用2 : 抓取對應第N欄資料
舉例 : 登入帳號紀錄如下
test@test:~$ last
test pts/0 172.25.48.1 Mon Sep 14 08:38 still logged in
test pts/2 172.25.48.1 Mon Sep 14 03:32 still logged in
test pts/1 172.25.48.1 Mon Sep 14 03:31 still logged in
test pts/1 172.25.48.1 Mon Sep 14 03:22 - 03:31 (00:08)
test pts/0 172.25.48.1 Mon Sep 14 03:00 - 03:39 (00:39)
test pts/0 172.25.48.1 Mon Sep 14 02:11 - 02:50 (00:38)
test pts/0 172.20.80.1 Sun Sep 13 11:34 - 17:02 (05:27)
test pts/0 172.20.80.1 Sun Sep 13 11:33 - 11:33 (00:00)
test tty1 Sun Sep 13 10:53 gone - no logout
reboot system boot 5.4.0-47-generic Sun Sep 13 10:53 still running
test pts/1 172.20.80.1 Wed Sep 9 08:39 - 11:52 (2+03:12)
test pts/0 172.20.80.1 Wed Sep 9 07:04 - 08:45 (01:40)
reboot system boot 5.4.0-47-generic Wed Sep 9 03:06 still running
reboot system boot 5.4.0-47-generic Wed Sep 9 03:04 still running
test tty1 Wed Sep 9 03:03 - crash (00:00)
reboot system boot 5.4.0-47-generic Wed Sep 9 03:03 still running
test pts/0 172.20.80.1 Wed Sep 9 03:02 - crash (00:01)
test tty1 Wed Sep 9 02:51 - crash (00:12)
reboot system boot 5.4.0-47-generic Wed Sep 9 02:50 still running
我只想要知道帳號跟方式就好
test@test:~$ last | awk '{print $1"\t"$2}'
test pts/0
test pts/2
test pts/1
test pts/1
test pts/0
test pts/0
test pts/0
test pts/0
test tty1
reboot system
test pts/1
test pts/0
reboot system
reboot system
test tty1
reboot system
test pts/0
test tty1
reboot system