Categories: Linux

Vim 符合搜尋條件、整行刪除或保留教學與範例

介紹如何使用 Vim 的正規表示法進行搜尋,並將符合條件的資料整行刪除。

搜尋並刪除符合的行

如果要在 Vim 編輯器中以正規表示法進行搜尋,並將符合條件的行(line)刪除,可以使用 g 指令搜尋,然後搭配結尾的 d 來刪除所有符合的行。

例如搜尋 dog 這個字眼,並將所有含有 dog 字眼的行都刪除:

:g/dog/d

這裡我們可以自由運用各種正規表示法進行匹配,例如要將含有 dogfog 字眼的行都刪除,可以執行:

:g/[df]og/d

若要將含有 dogcat 字眼的行刪除,可以執行:

:g/dog\|cat/d

匹配完整單字

若直接以 dog 這個簡單的字眼進行匹配,也會同時匹配到 doggy 這類包含 dog 的單字,如果只想要搜尋 dog 這個單字,排除 doggy,可以在前後加上單字邊界的條件,這樣就可以只匹配到 dog 這個單字了:

:g/\<dog\>/d

執行這一行指令之後,就只會把含有 dog 這個單字的行刪除,而含有 doggy 的行則不受影響。

刪除空白行

若要刪除檔案中所有的空白行,可以執行:

:g/^$/d

上面這一行指令只會刪除完全空的行,如果一行中含有空白字元或 tab 字元,就會被保留。

如果希望將只有空白字元或 tab 字元的行都一起刪除,可以改用這一行指令:

:g/^\s*$/d

搜尋並只保留符合的行

如果想要把符合搜尋條件的行保留下來,刪除其他所有沒有符合的行,可以在搜尋條件之前加上驚嘆號(!),以反向匹配的方式處理。

例如若要只保留含有 dog 字眼的行,將其他的所有行都刪除,就可以執行:

:g!/dog/d

若要只保留含有 dogcat 字眼的行,將其他的所有行都刪除,就可以執行:

:g!/dog\|cat/d

處理範圍

若只要針對檔案中的特定幾行進行處理,可以在開頭的 g 之前指定行的範圍。

例如只要針對第 1 行到第 15 行,將含有 dog 字眼的行刪除,則可執行:

:1,15 g/dog/d

在指定行範圍時,可以使用錢字號($)來代表檔案中的最後一行。

例如若要針對第 30 行之後到檔案的最後一行,將含有 dog 字眼的行刪除,則可執行:

:30,$ g/dog/d

參考資料

Share
Published by
Office Guide

Recent Posts

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

本篇介紹如何在 Python ...

1 年 ago

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

本篇介紹如何在 Ubuntu ...

1 年 ago

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

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

1 年 ago

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

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

1 年 ago