在 Linux 下如果需要將檔案內指定某一行資料刪除,可以用 sed 指令達成,以下教學會介紹在 Linux 下用 sed 指令,刪除檔案內指定的整行資料。
刪除指定行數
當知道要刪除的資料在檔案那一行,或者在某一個行數範圍時,可以直接指定刪除的行數,例如:
刪除檔案 filename.txt 的第 10 行:
1 |
sed -i '10d' filename.txt |
刪除檔案 filename.txt 的第 10 至 15 行:
1 |
sed -i '10,15d' filename.txt |
將包含有 “delete_str” 字串的一整行資料刪除:
1 |
sed -i '/delete_str/d' filename.txt |
將包含有 “delete_str” 字串的一整行資料刪除:
1 |
sed -i '/delete_str/d' filename.txt |
從第 10 行開始,後面的資料全部刪除:
1 |
sed -i '10,$d' filename.txt |
從包含字串 “delete_str” 的行開始,後面的資料全部刪除:
1 |
sed -i '/delete_str/,d' filename.txt |
刪除檔案最後一行:
1 |
sed -i '$d' filename.txt |
刪除檔案內的空白行:
1 |
sed -i '/^$/d' filename.txt |
或
1 |
sed -i '/./!d' filename.txt |
p.s. sed 支援正規表示式,所有正規表示式放在 “[ ]” 內,另外,如果搜尋內容有特殊字元,例如 “/”, “\”, “[” 及 “]” 等,需要在前面加上 “\”, 例如 “\[” 表示 “[” 字元。
請問 sed -i ‘/delete_str/,d’ filename.txt
這行是否少了個”$”