我有一个文本文件如下:
#1xx Informational responses
100=Continue
101=Switching Protocols
102=Processing
#2xx Success
200=OK
201=Created
202=Accepted
203=Non-Authoritative Information
204=No Content
205=Reset Content
206=Partial Content
207=Multi-Status
208=Already Reported
226=IM Used
我想要做的是将其转换为以下内容:
#1xx_Informational responses
100=Continue
101=Switching_Protocols
102=Processing
#2xx_Success
200=OK
201=Created
202=Accepted
203=Non_Authoritative_Information
204=No_Content
205=Reset_Content
206=Partial_Content
207=Multi_Status
208=Already_Reported
226=IM_Used
我可以使用:
:%s/[ \|-]/_/g
但它无条件地在所有行中更改空格或_和_,包括第一行:
#1xx_Informational_responses
我不希望这样。相反,我想要实现的是只有当一行以数字开头时才用_替换空格和-s。对于所有其他行,我不想执行替换操作。
有没有办法“有条件地”执行更换操作?我不想处理行号,行号可能会改变。我想要关于线的内容的答案(从这种情况的数字开始),而不是行号。
提前致谢。
答案 0 :(得分:6)
<data
android:scheme="https"
android:host="example.com"/>
:g/^\d/s/[ -]/_/g
命令在给定正则表达式匹配的每一行上执行命令。
(顺便说一句,您的正则表达式:global
会匹配一个空格或[ \|-]
或\
或|
的字符。)
答案 1 :(得分:0)
尝试通过sed传递它,这允许选择要在
上操作的行:%!sed '/^[0-9]/s/-/_/g'
此行选择以数字开头的所有行,然后,它将所有(从选项g
)-
字符替换为_
。