【问题标题】:How to make a new line in a text file at every instance of character X - Windows 7?如何在每个字符 X 实例的文本文件中创建一个新行 - Windows 7?
【发布时间】:2013-03-21 17:13:46
【问题描述】:

我有一个用字符填充的文本文件:

ABCABCABCABC

...并且使用脚本(Batch、VBS、Powershell,对 Windows 来说真的很简单)我试图为某个字符的每个实例自动添加一个新行,在这种情况下是字母 A,所以输出会然后显示为:

ABC
ABC
ABC
ABC

如何使用我上面提到的任何脚本工具来实现这一点?

非常感谢,非常感谢!

【问题讨论】:

    标签: windows powershell vbscript batch-file


    【解决方案1】:

    Powershell:

    (get-content c:\somedir\inputfile.txt) -replace 'A',"`nA" | set-content c:\somedir\outputfile.txt
    

    【讨论】:

    • 更新了代码以显示用于文件处理的示例。对于非常大的文件,您可能需要调整它以使用 -readcount 和 foreach-object 循环来节省内存。
    【解决方案2】:

    如果你可以使用 SED GOOGLE GNUSED

    sed s/A/\nA/g <yourfile >resultfile
    

    【讨论】:

      【解决方案3】:

      记事本++

      如果您的计算机上安装了notepad++,这只是一个查找和替换
      (http://notepad-plus-plus.org/download/v6.3.1.html)

      打开你的文本文件,按 Ctrl H 得到 Find & Replace

      选择搜索模式为ExtendedRegular expression

      查找A

      替换\nA

      【讨论】:

        【解决方案4】:

        Windows 批处理:

        @echo off
        setlocal enabledelayedexpansion
        
        echo contents of oldfile.txt:
        type oldfile.txt
        echo;
        
        del newfile.txt
        for /f "usebackq delims=" %%I in ("oldfile.txt") do (
            set "str=%%I" && set "str=!str:A=,A!"
            for %%x in (!str!) do (>>"newfile.txt" echo %%x)
        )
        
        echo contents of newfile.txt:
        type newfile.txt
        

        示例输出:

        C:\Users\me\Desktop>test.bat
        contents of oldfile.txt:
        ABCABCABCABCABC
        
        contents of newfile.txt:
        ABC
        ABC
        ABC
        ABC
        ABC
        

        这里有更多关于splitting a string in batch的信息。

        【讨论】:

          【解决方案5】:

          JScript:

          var fso = new ActiveXObject("Scripting.FileSystemObject");
          var read = fso.OpenTextFile("oldfile.txt", 1, 2);
          var write = fso.CreateTextFile("newfile.txt", true);
          var str = read.ReadAll();
          write.Write(str.replace(/A/g,'\nA').replace(/^\n/m,''));
          read.Close(); write.Close();
          

          第二个.replace 删除第一个新行,如果它作为文本的第一个字符出现。使用.js 扩展名保存此脚本并使用cscript filename.js 执行它。

          【讨论】:

            猜你喜欢
            • 2014-05-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-08-04
            • 1970-01-01
            相关资源
            最近更新 更多