iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
自我挑戰組

Ruby on Rails 與它們相關的東西系列 第 8

Day08 - 一些常用 Linux 指令 - 3-7 (cat、tac、head、tail、vi、sed)

前言

此為 Linux 相關的 3-7 篇,都是很常用的指令,每天學一點,並常使用,便會記下成為反射動作之一

cat

將該檔案內容印在終端機上

command | cat
cat -n file
cat file
cat file1 file2
cat file1 > target_file
cat file1 >> target_file

# 範例
git log | cat
cat -n 001.log
cat 001.log > 002.log
cat 001.log >> 002.log
cat 001.log 002.log > 003.log

幾個常用參數說明:

將輸入指令執行結果顯示在終端機上: | cat
顯示行數: -n
將多個文件覆蓋到目標文件中: >
將多個文件追加到目標文件中: >>
備註: 目標文件若原本不存在,則直接建立新檔案

tac

tac file
command | tac
tac file1 file2 > target_file

# 範例
git log --oneline --all --graph | tac
tac 001.log

幾個常用參數說明:

將輸入指令執行結果顯示在終端機上: | tac
將多個文件覆蓋到目標文件中: >
將多個文件追加到目標文件中: >>
備註: 目標文件若原本不存在,則直接建立新檔案

head

看該檔案頭部 (預設為 10 行)

head file
head -n 30 file
head -c 25 file

# 範例
head 001.log
head -n 30 001.log
head -c 25 001.log

幾個常用參數說明:

顯示前 N 行的訊息 (N 為數字): -n 30
顯示前 N bytes 的字元 (N 為數字): -c 25

tail

看該檔案尾部 (預設為 10 行)

tail file
tail -n 15 file
tail -f file

# 範例
tail 001.log
tail -n 001.log
tail -f 001.log

幾個常用參數說明:

顯示最後 N 行的訊息 (N 為數字): -n 30
持續讀取檔案,直到按 Ctrl + c 為止 (可觀察檔案持續更新的內容): -f

vi

vi 編輯器,可新增、修改檔案、搜尋並取代文字等

vi 001.log

幾個常用指令說明:

新增、編輯檔案: vi file_name
編輯模式: 進入 vi 後,鍵盤 i
離開編輯模式 (並非離開 vi 編輯器喔): ESC
不儲存離開 vi: :q
不儲存強制離開 vi: :q!
儲存且離開 vi : :wq
將檔案還原到最初狀態(進入 vi 後一開始的樣貌) : :e!
針對特定行數,搜尋並取代: :s/string/new_string/g
針對整份文件,搜尋並取代: :%s/string/new_string/g

示範如何針對特定行數及整份文件進行搜尋並取代文字

備註: 除了 vi 編輯器外,Linux 上知名編輯器還有 vim、nano

sed

檔案處理工具,是一個管道命令,以行為單位處理,能做到字串取代、複製、刪除等
在寫這段時,發現網路上已經有許多不錯的文章及詳細說明,故省略撰寫 XD
挑了幾篇覺得不錯的,放下方參考文件,跟著練習,會更有感覺及上手喔 :)

參考資料

  1. 鳥哥的 Linux 私房菜 -- 第十一章、正規表示法與文件格式化處理
  2. Linux中 sed 和 awk的用法詳解
  3. Linux 指令 SED 用法教學、取代範例、詳解

總整理

MacOS / Linux 指令 說明 範例
cat 將該檔案內容印在終端機上 cat demo.html
tac 反過來印出 cat 的內容 tac demo.html
head 看該檔案頭部 (預設為 10 行) head -n 3 demo.html
tail 看該檔案尾部 (預設為 10 行) tail -n 5 demo.html
vi vi 編輯器,可新增、修改檔案、搜尋並取代文字等 vi demo.html
sed 檔案處理工具,是一個管道命令,以行為單位處理,能做到字串取代、複製、刪除等 sed -n '$p'

小結

在搜尋取代整份文件時,習慣以 vi 進行操作,sed 反而比較少用,
之前在批次改 SQL 資料庫的某字串時,覺得蠻方便的,與使用習慣有關


鐵人賽文章連結:https://ithelp.ithome.com.tw/articles/10236105
medium 文章連結:https://link.medium.com/4hDsZdhXI9
本文同步發布於 小菜的 Blog https://riverye.com/

備註:之後文章修改更新,以個人部落格為主


上一篇
Day07 - 一些常用 Linux 指令 - 2-7 (ps、top、htop、free、df、du、kill)
下一篇
Day09 - 一些常用 Linux 指令 - 4-7 (grep、rg、luit、iconv、cal、date)
系列文
Ruby on Rails 與它們相關的東西31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言