我有一个巨大的文件,其中有多个列,如下所示:
J02-31 23.2 ...
J30-09 -45.4 ...
J05+30 56.1 ...
J00-20 -78.2 ...
J11-54 232.0 ...
... ... ...
我想仅在第一列中将
-
替换为 $-$
,即我的输出应该是这样的:
J02$-$31 23.2 ...
J30$-$09 -45.4 ...
J05+30 56.1 ...
J00$-$20 -78.2 ...
J11$-$54 232.0 ...
... ... ...
有没有办法使用
vi
来做到这一点。我知道 python/pandas
可以做到,但我对 vi
的用法感兴趣。
我会一起去
:%s/^\S*\zs-/$-$/
这意味着:
%s/
:对每一行应用此替换^\S*
:从行首读取尽可能多的非空白字符\zs
:实际比赛开始(您也可以捕获上面的\S*
并将其插入回去)-
:匹配-
(注意:这只会匹配第一列中的last-
,你的问题不太清楚是否可以有多个)/$-$/
:用-
替换匹配部分(由于
\zs
,这只是
$-$
你可以这样做:
:g/^\S*-/s/-/$-$/
仅在与模式
s/-/$-$/
匹配的行(即第一列中具有 - 的行)上执行替换 /^\S*-/
。
还有:
:%s/\(-\)\|\( .*\)/$\1$\2\3/g
应该适用于更通用的语法,在第一列有多个
-