關於vim正規表示式的一些問題,關於vim 正規表示式的一些問題

2022-12-02 03:56:08 字數 2238 閱讀 5658

1樓:匿名使用者

將帶有printf的行中的「%」符號替換成「$」;

:/printf/s/%/$/g

/printf/表示查詢printf的行,s/%/$/g s替換命令,將%替換成$ ,g表示全域性替換

將程式中的第60行到第65行之間的所有的數字刪除;

:60,65d

d為刪除命令,60,65表示行範圍

在程式中的第80行到90之間搜尋以小寫字母開始的行,並且找到後刪除該行;

(9)使用執行shell方式,在文字末尾插入當前日期;

:!date

當前編輯的文件丟失,使用vim的資料恢復功能找到(9)執行後的文件。

2樓:

這個要求可是不低呢。關於 unix/linux 系統中的一些正規表示式的熟練使用問題,那可不是任何一個人都能夠熟練掌握的。由於 shell 是 unix/linux 系統中功能最為強大的指令碼程式語言,故這個首先必須要熟練掌握 shell 程式設計(bash、或者是c-shell等),其次還必須要能夠熟練使用 awk、sed 等工具,然後再結合 shell 程式設計,最終才能夠達到使用者的各種要求。

如果不能夠達到以上的水平的話,那麼是無法完成這樣的要求的。

vim 正規表示式 查詢

vim中如何用正規表示式批量複製並修改字串

vim編輯器如何匹配如圖中的正規表示式,需要把檔案中匹配內容替換為空,無奈在vim或shell裡的sed測試無效

3樓:

sed內部有模式空間和保留空間之分。

通常情況下,sed從檔案中逐行讀入內容到模式空間內進行處理,一次只處理一行,所有你沒法直接匹配多行內容。

涉及用sed處理多行文字的問題,首先考慮直接匹配地址範圍來處理,不行的話其次還可以考慮利用sed的保留空間。

1)此問題直接用sed匹配地址範圍即可。

str="#方法一\n你好\n我好\n他好\n#方法二\nnihao\nwohao"

echo -e "$str" | sed '/^#方法一/,/^#方法二/d'

這樣就可以了,"#方法一"到"#方法二"以及之間的所有行就都被刪除了。

2)更復雜點的情況,通常我們還可以利用sed的保留空間來完成。

在處理這個問題上繁雜了點,但非常適合新手學習理解用。

echo -e "$str" | sed -n '/^#方法一/;/^#方法二/!};p'

通過h命令可以將模式空間裡的內容附加到保留空間,利用迴圈反覆操作(:a 設定標籤a;ba 跳轉到標籤a;n命令讀入下一行到模式空間),在保留空間內拼接成多行文字(通過\n分隔),然後通過x命令交換保留空間與模式空間的內容(或者通過g命令拷貝保留空間內容覆蓋到模式空間),這樣才在模式空間內得到多行文字,最後用d命令一下子刪除。

4樓:匿名使用者

在 vim 裡用 \_. 可以匹配跨行的內容。所以用:%s/#方法一\_.\#方法二//

就可以完成任務。\ 的意思是不貪心匹配。否則 \_.* 將直接匹配到檔案末。

另外,如果只是刪除的話,如 xiehuahere 所說,用:/#方法一/,/#方法二/d

要比用正則來的清楚的多。它的意思是刪除這兩個匹配行之間的內容。

用 sed 工作的方法參考 xiehuahere 說的就挺好。

5樓:栩箭

vim的正則與其他的正則區別有點點大。你在這種網頁上測試沒什麼用。

如果是想把文件中所有圖中黃色的5行字替換成空的話,用vim命令:

:%s/#方法一\(.\|\n\)*#方法二//g

誰給個匹配非字串的vim正規表示式

6樓:匿名使用者

匹配正規表示式,需要和匹配目的想聯絡。這樣往往可以化簡表示式並提高效率(包括編寫的和執行的)。

另外就是需要具體描述了,比如什麼樣的才算字串。不能一概而論。

在vim裡面能用正規表示式替換二進位制資料嗎

7樓:匿名使用者

原則上是可以的,但編輯二進位制資料需要使用者本人對檔案內容非常瞭解才行。用 vim 編輯二進行檔案的最基本概念,可以參考一下手冊:

:h 23.4

vim 擁有處理二進位制檔案的能力,但不是專門設計來幹這個的。通常寫程式去處理這樣的檔案比互動式編輯要容易。如果是針對專門的二進位制格式,使用專門的工具可能會更方便。

正規表示式問題

a za z a za z d 我測試怎麼可以 你測試不行,你得說一下詳細情況,舉個例子出來.要不然怎麼發現問題.你不測試一下就發啊 你這話怎麼就帶有不尊重人的味道 實際上,之前確實是沒有測試就發上來.那要是遇到一個是有測試才發上來的呢.這個正則,自我感覺它是正確的,你說不行後 也有去測試的.還是沒...

正規表示式如何獲取匹配的部分,怎樣獲取正規表示式匹配字串的一部分

要的那一部分用 括上,取組就行了 或者取出來後再來一次正則匹配 怎樣獲取正規表示式匹配字串的一部分 js如何用正規表示式獲取字串內的匹配部份?實現的效果 在字串中abcdefgname test sddfhskshjsfsjdfps中獲取name的值test 實現的機制 通過replace的 函式獲...

中英文冒號的正規表示式,冒號如何使用正規表示式表示

首先給你解釋你說的不明白的那兩個內容吧,定義是這樣的 pattern 匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行儲存供以後使用。這在使用 或 字元 來組合一個模式的各個部分是很有用。例如,industr y ies 就是一個比 industry industries ...