我从/proc/some_proc_id/cmdline
我的 ubuntu 机器中复制了这一行,
java^@-jar^@/usr/lib/selenium/selenium-server-standalone.jar^@-port^@4444^@-trustAllSSLCertificates^@
Run Code Online (Sandbox Code Playgroud)
不知何故,空格字符^@
在 vi 中由 表示。我尝试使用命令将它们替换为空格字符,
:%s#^@# #g
Run Code Online (Sandbox Code Playgroud)
但它说,pattern not found ^@
。
如何替换特殊字符,尤其是那些以克拉符号开头的字符?
Cel*_*ada 20
不知何故,空格字符
^@
在 vi 中由 表示。
不是vi
那样做的。尽管您在 shell 中键入命令行,参数之间有空格,但命令行实际上是内部离散的字符串序列,而不是一个以空格分隔的长字符串。在启动命令之前,shell 将命令行分隔为单独的参数字符串。
在 C 中,字符串以 NUL 字符结尾,这些字符显示为^@
.
如何替换特殊字符,尤其是那些以克拉符号开头的字符?
为了输入这些字符,您必须在它们前面加上Control-v作为字面量的下一个字符。
例如在这种情况下:Control-v后跟Control- @。
引入文字下一个字符的特殊字符通常是Control-v但它实际上是可配置的。键入stty -a
以了解它的设置。lnext
在输出中寻找。
该符号表示 NULL 字符,ASCII 值为 000。
你可以试试:
:%s/\%x00/ /g
Run Code Online (Sandbox Code Playgroud)
在 @ 符号位于2键顶部的键盘上(感谢 Celada),您可以执行以下操作:
%s/<CTRL-2>/ /g
(在电脑上)
%s/<CTRL-SHIFT-2>/ /g
(在 Mac 上)
其中<CTRL-2>
意味着首先按下CTRLPC 上的 ,保持按下,点击2,释放CTRL。
和<CTRL-SHIFT-2>
表示首先按下controlMac 上的 ,保持按下状态,按下shiftMac 上的 ,保持按下状态,点击2,松开control和shift。
最后,这两个命令都应该在%s/^@/ /g
屏幕上显示。^@
表示单个字符,^
后面没有@
,因此您不能在上面的命令中直接输入^
和@
。
此命令^@
用空格字符替换所有的。
(来源)
归档时间: |
|
查看次数: |
83526 次 |
最近记录: |