類別:系統及安全性
| 發布於 2025-06-24 20:26
Linux 文字編輯
vi 文字編輯器
介紹
在大多數的 Linux 發行版中,許多服務都需要透過編輯設定檔來正確運作,因此學習一套順手的文字編輯器,能大幅提升系統管理效率。
vi 是歷史悠久且幾乎所有 Linux/Unix 系統皆內建的文字編輯器。熟悉 vi 不僅能在 Linux 上使用,也能應用於
*BSD、macOS 等作業系統。
vi 常用功能包含:
vi 有三個主要操作模式:
- 一般模式(Normal mode):控制游標、刪除複製貼上、進入其他模式
- 編輯模式(Insert mode):開始輸入文字
- 指令模式(Command mode):輸入以
:
開頭的指令進行存檔、離開等操作
所有模式皆可按下 [ESC] 鍵回到一般模式。
一般模式(Normal mode)
在此模式中可進行游標移動與文字操作:
游標移動指令:
| 功能 |
按鍵 |
| 游標往上 |
k |
| 游標往下 |
j |
| 游標往左 |
h |
| 游標往右 |
l |
| 移至第 1 行 |
1G |
| 移至第 5 行 |
5G |
| 移至第 n 行 |
nG |
| 移至最後一行 |
G |
| 行首 |
^ |
| 行尾 |
$ |
文件操作指令:
| 功能 |
按鍵 |
| 複製一行 |
yy |
| 複製 n 行 |
nyy |
| 在下一行貼上 |
p |
| 在上一行貼上 |
P |
| 剪下一個字元 |
x |
| 剪下 n 個字元 |
nx |
| 刪除一整行 |
dd |
| 刪除 n 行 |
ndd |
編輯模式(Insert mode)
從一般模式切換到編輯模式可使用下列指令:
| 功能 |
按鍵 |
| 於游標所在位置開始編輯 |
i |
| 於游標下一字元開始編輯 |
a |
| 在當前行下方新增一行並編輯 |
o |
| 在當前行上方新增一行並編輯 |
O |
在編輯模式中,按 [ESC] 可回到一般模式。
指令模式(Command mode)
在一般模式中輸入 : 進入指令模式,常用指令如下:
| 功能 |
指令 |
| 存檔 |
:w |
| 離開 |
:q |
| 存檔並離開 |
:wq |
| 強制離開不存檔 |
:q! |
| 強制存檔 |
:w! |
| 尋找字串 |
/字串 |
注意事項
vi 開啟檔案時,會建立一個暫存的交換檔(swap file)。正常關閉 vi 時該檔會被移除。但若非正常關閉(如斷電、kill
process),則該檔案會保留,之後再次開啟原檔案會收到提示訊息。
串流編輯:sed 與 awk
正規表示式基本語法
| 表達式 |
意義 |
^ |
行開頭,如 ^abc 表示以 abc 開頭 |
$ |
行結尾,如 abc$ 表示以 abc 結尾 |
[a-z] |
a 到 z 任一字元 |
* |
出現 0 次或多次,如 a* |
\{3,5\} |
出現 3 至 5 次 |
\(abc\) |
群組,比對完整字串 abc |
sed
sed(Stream Editor)是用於處理文字資料流的工具,適合快速取代、刪除、插入等操作,並可配合正規表示式使用。
基本語法
範例:
awk
awk 是文字資料處理工具,適合處理具欄位結構的檔案(例如 CSV)。可指定欄位分隔字元,預設使用空白或 [Tab]。
基本語法
範例:
檔案內容(awk_sample.txt):
輸出:
Linux 文字編輯
vi 文字編輯器
介紹
在大多數的 Linux 發行版中,許多服務都需要透過編輯設定檔來正確運作,因此學習一套順手的文字編輯器,能大幅提升系統管理效率。
vi是歷史悠久且幾乎所有 Linux/Unix 系統皆內建的文字編輯器。熟悉vi不僅能在 Linux 上使用,也能應用於 *BSD、macOS 等作業系統。vi常用功能包含:vi有三個主要操作模式::開頭的指令進行存檔、離開等操作所有模式皆可按下
[ESC]鍵回到一般模式。一般模式(Normal mode)
在此模式中可進行游標移動與文字操作:
游標移動指令:
kjhl1G5GnGG^$文件操作指令:
yynyypPxnxddndd編輯模式(Insert mode)
從一般模式切換到編輯模式可使用下列指令:
iaoO在編輯模式中,按
[ESC]可回到一般模式。指令模式(Command mode)
在一般模式中輸入
:進入指令模式,常用指令如下::w:q:wq:q!:w!/字串注意事項
vi開啟檔案時,會建立一個暫存的交換檔(swap file)。正常關閉vi時該檔會被移除。但若非正常關閉(如斷電、kill process),則該檔案會保留,之後再次開啟原檔案會收到提示訊息。串流編輯:sed 與 awk
正規表示式基本語法
^^abc表示以 abc 開頭$abc$表示以 abc 結尾[a-z]*a*\{3,5\}\(abc\)sed
sed(Stream Editor)是用於處理文字資料流的工具,適合快速取代、刪除、插入等操作,並可配合正規表示式使用。基本語法
sed '樣式命令' 檔案範例:
# 刪除空白行 sed '/^$/d' file.txt # 同時執行多個命令 sed -e '1d' -e '3d' file.txt # 將 ab 替換為 fg,並修改檔案本身(需有權限) sed -i 's/ab/fg/g' file.txtawk
awk是文字資料處理工具,適合處理具欄位結構的檔案(例如 CSV)。可指定欄位分隔字元,預設使用空白或 [Tab]。基本語法
awk -F '分隔符號' '樣式 {動作}' 檔案範例:
檔案內容(
awk_sample.txt):# 取出第 2 欄位(以逗號分隔) awk -F ',' '{print $2}' awk_sample.txt輸出: