Vi

在 vi 中搜尋和替換控製字元(^@、^M、^I….)

  • September 6, 2020

/proc/some_proc_id/cmdline我從我的 ubuntu 機器中複製了這一行,

java^@-jar^@/usr/lib/selenium/selenium-server-standalone.jar^@-port^@4444^@-trustAllSSLCertificates^@

不知何故,空格字元^@在 vi 中表示為。我嘗試使用命令將它們替換為空格字元,

:%s#^@# #g

但它說,pattern not found ^@.

如何替換特殊字元,尤其是那些以克拉符號開頭的字元?

不知何故,空格字元^@在 vi 中表示為。

不是vi那樣做的。儘管您在 shell 中鍵入命令行,參數之間有空格,但命令行實際上是內部離散的字元串序列,而不是一個用空格分隔的長字元串。在啟動命令之前,shell 將命令行分成單獨的參數字元串。

在 C 中,字元串以 NUL 字元結尾,顯示為^@.

如何替換特殊字元,尤其是那些以克拉符號開頭的字元?

為了鍵入這些字元,您必須在它們前面加上Control-v以表示下一個字元。

例如在這種情況下:Control-v後跟Control- @

引入文字下一個字元的特殊字元通常是Control-v但它實際上是可配置的。鍵入stty -a以找出它的設置。lnext在輸出中尋找。

引用自:https://unix.stackexchange.com/questions/217010