【问题标题】:Convert file one word per line转换文件每行一个字
【发布时间】:2011-03-22 09:15:37
【问题描述】:

我想将包含单词、空格分隔的文本文件转换为每个单词出现在单独一行的文件

 sdf sdfsd= sdfsdf 
sdfsdf

会变成

  sdf
  sdfsd= 
  sdfsdf 
  sdfsdf

谢谢

【问题讨论】:

    标签: vim scripting sed awk vi


    【解决方案1】:

    试试这个:

    :%s/\s\+/\r/g
    

    解释:

    :%     // whole file
     s     // substitute
     \s\+  // some number of whitespace characters
     \r    // for carriage return
    

    感谢@Dummy00001 提出+ 的想法。

    【讨论】:

      【解决方案2】:

      输入以下命令:

      :%s/ /\r/g

      或任何适合您环境的回车。 \r 代表 *nix,\n 代表 windows。

      【讨论】:

      • '\r' 是正确答案:匹配时,行尾是'\n',替换时行尾是'\r'。不论平台。 VIM 会自动处理其余的。我建议的唯一增强是在空格后添加\+:%s/ \+/\r/g
      • @Dummy rad,不知道 \r 和 \n 是独立于平台的。谢谢!
      • 我经常使用<C-V><C-M> 输入一个换行符,然后显示为^%
      【解决方案3】:

      这也很容易写成一个shell脚本,你不需要sedawk

      bash$ for word in $(cat input.txt); do echo "$word" >> output.txt; done
      

      【讨论】:

        【解决方案4】:
        $ tr " " "\n"<file|sed -n '/^$/!p'
        sdf
        sdfsd=
        sdfsdf
        sdfsdf
        

        【讨论】:

          猜你喜欢
          • 2019-12-14
          • 1970-01-01
          • 1970-01-01
          • 2021-06-12
          • 1970-01-01
          • 2015-03-28
          • 1970-01-01
          • 2014-06-29
          • 2019-10-04
          相关资源
          最近更新 更多