此為 Linux 相關的 4-7 篇,有準備情境讓大家可以練習,開始會有組合技的使用技巧
# 將以下資訊儲存成 demo.log
INFO [2099-01-11 13:14:40]: order_id: 0001, message: "建立成功"
INFO [2099-01-11 14:15:41]: 其它資訊
INFO [2099-01-11 14:18:42]: order_id: 0002, message: "建立成功"
INFO [2099-01-12 10:00:10]: order_id: 0003, message: "建立成功"
INFO [2099-01-12 10:00:13]: 其它資訊
INFO [2099-01-12 11:22:40]: order_id: ----, message: "建立失敗"
INFO [2099-01-15 14:15:40]: order_id: 0004, message: "建立成功"
INFO [2099-01-15 23:34:10]: order_id: 0005, message: "建立成功"
INFO [2099-01-15 14:15:32]: order_id: 0006, message: "建立成功"
INFO [2099-01-15 14:15:33]: 其它資訊
INFO [2099-01-16 14:15:24]: order_id: 0007, message: "建立成功"
INFO [2099-01-16 14:15:25]: order_id: ----, message: "建立失敗"
INFO [2099-01-16 14:15:29]: order_id: 0008, message: "建立成功"
INFO [2099-01-16 14:15:30]: 其它資訊
INFO [2099-01-16 14:15:30]: order_id: ----, message: "建立失敗"
INFO [2099-12-25 08:15:40]: order_id: 0009, message: "建立成功"
INFO [2099-12-25 09:15:40]: 其它資訊
INFO [2099-12-25 10:15:40]: order_id: 0010, message: "建立成功"
INFO [2099-12-25 11:15:40]: order_id: 0011, message: "建立成功"
INFO [2099-12-25 11:15:40]: order_id: 0012, message: "建立成功"
INFO [2099-12-25 15:15:40]: 其它資訊
INFO [2099-12-25 16:15:40]: order_id: ----, message: "建立失敗"
INFO [2099-12-25 17:15:40]: order_id: 0013, message: "建立成功"
INFO [2099-12-25 20:15:40]: 其它資訊
找出符合搜尋條件的訊息
# 關鍵字 路徑
grep search_pattern path
# 找出正在運行中的程式,關鍵字為 line
ps aux | grep line
# 符合條件的下文也顯示 6 行
grep -A 6 "0007" demo.log
# 符合條件的上文也顯示 3 行
grep -B 3 "0007" demo.log
# 符合條件的下下各顯示 5 行
grep -C 5 "成功" demo.log
# 計算關鍵字出現的次數
grep -c "成功" demo.log
# 過濾除了關鍵字的訊息
grep -v "其它" demo.log
# 找出符合 A or B 關鍵字的訊息
grep -E "2099|成功" demo.log
grep -E '2099|成功' demo.log
grep '2099\|成功' demo.log
# 找出符合 A and B 的關鍵字訊息
grep "2099" demo.log | grep 成功
# 找出 2099-01-16 建立成功的訂單數量
# 方法1
grep '2099-01-16' demo.log | grep -c 建立成功
# 方法2
grep '2099-01-16' demo.log | grep 建立成功 | wc -l
# 方法3
grep '2099-01-16' demo.log | grep -v -c '建立失敗\|其它資訊'
# 找出 2099-01-16 建立成功的資訊,並反轉印出
grep '2099-01-16' demo.log | grep 建立成功 | tac
符合條件的下文也顯示 n 行: -A n
符合條件的上文也顯示 n 行: -B n
符合條件的上下各顯示 n 行: -C n
計算符合條件的數量: -c
除了關鍵字以外的訊息,其它全顯示: -v
用正規表示式搜尋 (regexp): -E
全名為 ripgrep ,為 grep
加強版,
用起來手感與 grep
差不多,搜尋速度更快,個人習慣以 rg
取代 grep
備註: 需另外安裝 官方網站
# MacOS、Linux 原生不支援這指令
# MacOS 安裝指令
brew install ripgrep
rg 建立成功
rg -uu 建立成功
rg -C 7 建立失敗
rg '2099|成功' demo.log
rg "2099" demo.log | rg 成功
rg -t log 成功
rg -z "成功"
符合條件的下文也顯示 n 行: -A n
符合條件的上文也顯示 n 行: -B n
符合條件的上下各顯示 n 行: -C n
計算符合條件的數量: -c
除了關鍵字以外的訊息,其它全顯示: -v
隱藏檔案及 .gitignore
檔也一併搜尋: -uu
針對特定副檔名搜尋: -t type
壓縮檔也一併搜尋: -z
(支援格式 gzip、bzip2、xz、LZ4、LZMA、Brotli、Zstd)
(謎之聲,習慣在終端機直接輸入 rg 關鍵字
,快速找該目錄底下所有符合條件的檔案及內容
將文件編碼轉換成另一種格式
# MacOS 原生不支援這指令
# Ubuntu 有支援
# MacOS 安裝指令
brew install luit
# 範例
luit -encoding big5 cat demo.txt
luit -encoding big5 rg '訂單' demo.txt
多種國際編碼格式之間進行文字內碼的轉換
iconv -l
# 範例
cat order_info.txt | iconv -f big5
iconv -f UTF-16 demo.log > hello.log
顯示所有支援的編碼格式: -l
將檔案進行編碼轉檔後,另存新檔案: -f from_encoding input_file > output_file
顯示行事曆資訊
cal
cal -3
cal -m 12
cal -y 2012
cal 1 2012
顯示當月的前後一個月: -3
顯示當年指定月份 (month 為 1-12): -m month
顯示指定年份月曆 (year 為 1..9999): -y year
顯示特定月份日曆 (參數範圍如上): month year
顯示系統日期時間資訊
date
date +%s
date -r 1598937256
將當下時間轉成 Unix timestamp: +%s
將 Unix timestamp 轉成人類看得懂的: -r timestamp
MacOS / Linux 指令 | 說明 | 範例 |
---|---|---|
grep | 找出符合搜尋條件的訊息 | `rails routes |
rg | grep 加強版 |
rg 訂單名稱 |
luit | 將文件編碼轉換成另一種格式 | luit -encoding big5 cat demo.txt |
iconv | 多種國際編碼格式之間進行文字內碼的轉換 | `cat order_info.txt |
cal | 顯示行事曆資訊 | cal -m 7 |
date | 顯示系統日期時間資訊 | date |
這篇花蠻多時間在想情境及準備假資料,透過範例,能更快上手並學會組合技,
若覺得受用歡迎在下方留言或交流喔
鐵人賽文章連結:https://ithelp.ithome.com.tw/articles/10236391
medium 文章連結:https://link.medium.com/YFjvigcCK9
本文同步發布於 小菜的 Blog https://riverye.com/
備註:之後文章修改更新,以個人部落格為主