28

,任何人都知道如何使用 Vim 在文件中删除所有空格并用逗号替换它们?文件输入示例(单词可能无处不在!):

C1       TEST   PROD
A1    BE


T1     B1 

文件输出示例(属于同一行的所有单词如下例所示):

C1,TEST,PROD
A1,BE
T1,B1 

我找到了%s/\s\{1,}/,/gc

4

4 回答 4

77

首先删除空行:

:g/^\s*$/d

然后:s///在每行 ( %) 上使用替换 ( ) 将所有 ( g) 连续空格 ( \s\+) 替换为逗号 ( ,)。

 :%s/\s\+/,/g
于 2012-12-07T10:57:40.313 回答
5

另一种方法:

%s/\s\{1,}/,/gc

于 2015-06-13T12:01:17.107 回答
0

当转换带有标题的文本文件和带有空格的文本字段时,我使用了%s/\s\{2,}/,/g

于 2018-09-21T15:14:28.833 回答
0

如果文件包含 n 行,并且在每行的开头、每行的结尾和中间包含空格。并且您想删除开头和结尾的空格,并用逗号“,”替换多个空格之间的空格。并且还重定向输出并保存到一个新文件,保持原始文件不变。

使用以下命令 -

sed -e 's/^[ \t]*// ; s/[[:blank:]]*$// ; s/\s\+/,/g ; s/,$//' input-file-name | tee output-file-name

如果不在同一目录中,则给出输入文件名的路径。

或者你可以写下所有这些——

"s/^[ \t]*//
s/[[:blank:]]*$//
s/\s\+/,/g ; s/,$//"

在一个txt文件中保存它。并使用 -f 选项。

所以命令变成 -

sed -f commands.txt input-file-name.txt | tee output-file-name.txt

commnads.txt 包含 sed 命令的上述条件

于 2019-07-31T19:49:20.113 回答