从命令行修剪文本文件(Windows)

时间:2011-05-06 22:10:09

标签: command-line trim

我有一个包含数百行的文本文件,例如

test.bin:8948549854958

它们的样式都与上面的文件(xxxxxxx.xxx:xxxxxxxxxxxxxx

类似

有什么方法可以修剪所有线条,例如获取该行的:xxxxxxxxxxxxxxx,以便离开xxxxxxx.xxx

7 个答案:

答案 0 :(得分:7)

Trim.bat:

@FOR /F "tokens=1 delims=:" %%G IN (%1) DO @echo %%G

用法:trim source.txt > destination.txt

请参阅here

答案 1 :(得分:3)

嗯,因为很明显除了PowerShell之外,Windows上没有“标准”工具可以实现这一点,你可以自己动手:

#include <stdio.h>
#include <string.h>

main(int argc, char *argv[])
{
    char s[2048], *pos=0;
    while (fgets(s, 2048, stdin))
    {
        if (pos = strpbrk(s, ":\r\n"))
            *pos='\0';
        puts(s);
    }
    return 0;
}

请注意,这具有规范化行尾(CRLF)的“副作用”,并且在输入中不允许行&gt; 2048个字符。但是,它在所有平台上都能很好地工作我只是用winegcc(winelib),mingw(在linux上)和MSVC编译器编译它。如果你想要二进制文件,请告诉我

哦,强制使用演示:

C:\> strip.exe < input.txt > output.txt

答案 2 :(得分:0)

如果您可以使用脚本分发exe,则可以使用像egrep这样的'grep'的Windows编译。如果你想用脚本编写,你没有很多选项可以在Windows上查找替换。根据您的情况,您可以通过'findstr'cmd来实现。

答案 3 :(得分:0)

这样的program already exists,虽然它确实是错误的。这是我能找到的唯一具有这种明显功能的程序。我希望Notepad ++或其他一些文本编辑软件能够实现这一功能。

答案 4 :(得分:0)

对于记事本++,请进行查找和替换。务必打开“替换”选项卡左下角的“正则表达式”,并将其用作查找条件。 (** \:。*) 我会用“)”替换它,除非你希望它也被删除。如果是这样,你可能想删除“(”表示对称,但一定要关闭“正则表达式”单选按钮,否则后续搜索将无法按预期执行。

答案 5 :(得分:0)

以非编程方式执行此操作的最简单方法是使用文本编辑器(如TextPad或Notepad ++)并执行块选择(必须从菜单中切换模式)并选择矩形文本区域(最后十二列或其他任何内容) )并简单地删除它们。当您处于块选择模式时,选择将不会回绕并抓住行的开头。

答案 6 :(得分:0)

for / F&#34; tokens = 1,2 delims =:&#34; %i in(filename)do @echo%i