【发布时间】:2019-08-01 03:49:20
【问题描述】:
有人知道如何在使用 Vim 的文件中删除所有空格并用逗号 , 替换它们吗?
文件输入示例(单词可能无处不在!):
C1 TEST PROD
A1 BE
T1 B1
文件输出示例(属于同一行的所有单词如下例所示):
C1,TEST,PROD
A1,BE
T1,B1
我找到了:
%s/\s\{1,}/,/gc
【问题讨论】:
标签: vim
有人知道如何在使用 Vim 的文件中删除所有空格并用逗号 , 替换它们吗?
文件输入示例(单词可能无处不在!):
C1 TEST PROD
A1 BE
T1 B1
文件输出示例(属于同一行的所有单词如下例所示):
C1,TEST,PROD
A1,BE
T1,B1
我找到了:
%s/\s\{1,}/,/gc
【问题讨论】:
标签: vim
先删除空行:
:g/^\s*$/d
然后在每一行 (%) 上使用替换 (:s///) 将所有 (g) 连续空格 (\s\+) 替换为逗号 (,)。
:%s/\s\+/,/g
【讨论】:
*.csv文件非常有用。
另一种方法:
%s/\s\{1,}/,/gc
【讨论】:
在转换带有标题和带有空格的文本字段的文本文件时,我使用了%s/\s\{2,}/,/g
【讨论】:
如果文件包含 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 命令的上述条件
【讨论】: