首頁 > 運維 > linux運維 > 主體

linux怎麼刪除檔案某幾行

青灯夜游
發布: 2022-07-19 18:53:31
原創
19601 人瀏覽過

在linux中,可以利用sed指令來刪除指定檔案的某幾行,執行「sed 'M,Nd' 檔名」語句可以刪除從M到N的連續行內容,執行「sed ' N1d;N2d;N3d;$d' 檔案名稱」語句可以刪除不連續的第N1、N2、N3行內容,執行「sed '/特定字元/d' 檔案名稱」語句可以刪除包含特定字元的行,執行“sed '/^特定字元/d' 檔名”語句可以刪除特定字元開頭的行。

linux怎麼刪除檔案某幾行

本教學操作環境:linux7.3系統、Dell G3電腦。

在linux中,可以利用sed指令來刪除指定檔案的某幾行。

sed 是 Stream Editor 的簡寫,它用於在 Linux 中進行基本的文字轉換,是檔案操作的一個重要命令,所以,我們也可以用它來實現文字的刪除操作。

以下是一些 sed 指令的使用範例,涵蓋了大多數的使用場景,由淺入深地幫助你學習 sed 指令,讓你輕鬆地實現高效刪除檔案的特定行內容。

首先我們準備一個示範檔案 sed-demo.txt,看看檔案內容

cat sed-demo.txt
登入後複製

linux怎麼刪除檔案某幾行

然後我們就可以運用 sed 指令進行實驗了。

1. 刪除某一行

首先,我們先從刪除某一行開始,例如刪除第一行、最後一行,實際上也就是第N 行嘛。

刪除第N 行的命令格式:

sed 'Nd' file
登入後複製

我們來刪除第一行試試:

sed '1d' sed-demo.txt
登入後複製

linux怎麼刪除檔案某幾行

##很簡單是吧?這裡就不多作解釋了,你想要刪除第幾行的內容只需要把指令中的 1 替換一下就 ok 了。

那問題來了,最後一行用什麼數字表示呢?這裡給大家一個小提示,可以用美元符號$ 表示最後,所以刪除最後一行的指令可以這麼寫:

sed '$d' sed-demo.txt
登入後複製

linux怎麼刪除檔案某幾行

2. 刪除某些行

sed 指令可以刪除連續又或不連續的行內容。

刪除連續的行,例如刪除從5 到7 行的內容:

sed '5,7d' sed-demo.txt
登入後複製

linux怎麼刪除檔案某幾行

#刪除不連續的行,例如刪除第1 、第5 、第9 和最後一行:

sed '1d;5d;9d;$d' sed-demo.txt
登入後複製

linux怎麼刪除檔案某幾行

另外,它還可以配合邏輯非! 使用,例如刪除第3到6 行以外的其他行:

sed '3,6!d' sed-demo.txt
登入後複製

linux怎麼刪除檔案某幾行

3. 刪除空白行

#sed 也支援刪除檔案的空白行,指令如下:

sed '/^$/d' sed-demo.txt
登入後複製

linux怎麼刪除檔案某幾行

提示:這裡兩個斜線/ / 內的表達式起到了文字匹配的作用,大家可以參考正規表示式的使用方法。以下將列舉一些常用的方法來加深大家的學習。

4. 刪除包含特定字元的行

#假設我們想要刪除範例檔案中的包含System 這個單字的行內容,我們可以用/System/,它表示有出現System 這個字串就進行匹配,具體的命令如下:

sed '/System/d' sed-demo.txt
登入後複製

linux怎麼刪除檔案某幾行

不僅如此,我們還可以加上邏輯條件,比方說下面的命令:

sed '/System\|Linux/d' sed-demo.txt
登入後複製

linux怎麼刪除檔案某幾行

符號

\| 代表邏輯或,上述命令的意思是文字中有System 或Linux 的行都要進行刪除。

5. 刪除特定字元開頭的行

#首先,我們建立另一個範例檔案sed-demo-1.txt 進行更好地演示,其內容如下:

cat sed-demo-1.txt
登入後複製

linux怎麼刪除檔案某幾行

上面也已經提到過,$ 號可以理解為結尾,那麼有沒有字元可以代表開頭呢?答案是有的,這裡我們可以用 ^ 號代表開頭。

那麼,我們想要刪除以某一個字元開頭的行時,比如說刪除以 R 開頭的行,可以使用以下命令:

sed '/^R/d' sed-demo-1.txt
登入後複製

1linux怎麼刪除檔案某幾行

那么问题来了,比如我想删除以 R 或者 F 开头的行,那我是不是要执行两次命令呢?如果是有更多岂不是要执行多次命令?这里它有一个简单的写法,你只要把这些字符写在一对中括号 [] 里就可以了:

sed '/^[RF]/d' sed-demo-1.txt
登入後複製

1linux怎麼刪除檔案某幾行

上面命令的作用是 删除以 R 或者 F 开头的行。

6. 删除特定字符结尾的行

同上面一个道理,删除以某一个字符结尾的行,比方说删除以 m 结尾的行,我们可以这样做:

sed '/m$/d' sed-demo.txt
登入後複製

1linux怎麼刪除檔案某幾行

删除以 x 或 m 结尾的行可以这样写:

sed '/[xm]$/d' sed-demo.txt
登入後複製

1linux怎麼刪除檔案某幾行

7. 删除以大写字母开头的行

这里问题又来了,我想要删除所有以大写字母开头的行呢?按照上面的做法是不是要将 A 到 Z 这 26 个字母都写进 [ ] 里呢?其实我们大可不必这样做,在 A 和 Z 中间加个 - 就可以了:

sed '/^[A-Z]/d' sed-demo-1.txt
登入後複製

1linux怎麼刪除檔案某幾行

机智的你看到这里肯定会想到其他类似的用法的了,不妨看看下面是否有你想到的命令吧。

8. 删除包含字母字符的行

sed '/[A-Za-z]/d' sed-demo-1.txt
登入後複製

1linux怎麼刪除檔案某幾行

9. 删除包含数字的行

sed '/[0-9]/d' sed-demo-1.txt
登入後複製

1linux怎麼刪除檔案某幾行

另外,通过这个例子,我们可以加上 ^ 和 $ 更好地看到他们之间的区别:

sed '/^[0-9]/d' sed-demo-1.txt
登入後複製

1linux怎麼刪除檔案某幾行

sed '/[0-9]$/d' sed-demo-1.txt
登入後複製

1linux怎麼刪除檔案某幾行

相关推荐:《Linux视频教程

以上是linux怎麼刪除檔案某幾行的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板