【问题标题】:Remove all white space in a file and replace them with a comma using Vim使用 Vim 删除文件中的所有空格并用逗号替换它们
【发布时间】: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


    【解决方案1】:

    先删除空行:

    :g/^\s*$/d
    

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

     :%s/\s\+/,/g
    

    【讨论】:

    • 每个组件的解释特别有用,并且在 SO 的答案中经常被省略。谢谢! (也就是说,第一行也是如此)
    • 生成*.csv文件非常有用。
    【解决方案2】:

    另一种方法:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        如果文件包含 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 命令的上述条件

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-03
          • 1970-01-01
          相关资源
          最近更新 更多