Categories: Linux

Linux 以 sed 刪除第一行、最後一行、指定某行、匹配行教學與範例

介紹如何在 Linux 系統中使用 sed 指令快速刪除檔案中的某幾行。

刪除指定行

若要刪除文字檔案中的第一行,可以執行:

# 刪除 myfile.txt 的第一行
sed -i '1d' myfile.txt

若要刪除文字檔案中的第 8 行,可以執行:

# 刪除 myfile.txt 的第 8 行
sed -i '8d' myfile.txt

若要刪除文字檔案中的最後一行,可以執行:

# 刪除 myfile.txt 的最後一行
sed -i '$d' myfile.txt

若要刪除文字檔案中的第 3 行至第 6 行,可以執行:

# 刪除 myfile.txt 的第 3 行至第 6 行
sed -i '3,6d' myfile.txt

刪除匹配行

如果想要搜尋檔案內容,刪除含有特定關鍵字的行,可以執行:

# 刪除包含 my_keyword 關鍵字的行
sed -i '/my_keyword/d' myfile.txt

若要將包含 my_keyword 關鍵字的行一直到檔案結尾的每一行都刪除,可以執行:

# 刪除包含 my_keyword 關鍵字的行到檔案結尾
sed -i '/my_keyword/,d' myfile.txt

若要刪除包含 my_keyword1my_keyword2 關鍵字的行,可以執行:

# 刪除包含 my_keyword1 或 my_keyword2 關鍵字的行
sed -i '/my_keyword1\|my_keyword2/d' myfile.txt

許多程式語言的註解行都會以井字號(#)開頭,若要刪除所有井字號開頭的註解行,可以執行:

# 刪除井字號開頭的行
sed -i '/^#/d' myfile.txt

若要刪除完全沒有資料的空行,可以執行:

# 刪除空行(完全沒有資料)
sed -i '/^$/d' myfile.txt

若要刪除完全沒資料的空行,以及只包含空白字元的行,則可執行:

# 刪除空行,以及只包含空白字元的行
sed -i '/^[[:space:]]*$/d' myfile.txt

備份檔案

若要刪除每個檔案的第一行,並將原始檔備份至 *.bak,可以執行:

# 刪除每個檔案的第一行,並將原始檔備份至 *.bak
sed -i.bak '1d' file1.txt file2.txt file3.txt

合併多個 CSV 檔案

假設我們有多個欄位都相同的 CSV 檔案 file1.csvfile2.csvfile3.csv 等,若要將這些 CSV 檔案合併成一個大的 CSV 檔案,可以使用以下指令:

# 取出第一行標頭
head -n 1 file1.csv > all.tmp

# 刪除每個 CSV 檔案的第一行標頭,附加至 all.tmp
sed -s '1d' *.csv >> all.tmp

# 重新命名檔案
mv all.tmp all.csv

參考資料

Share
Published by
Office Guide
Tags: Bash

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago