从findstr命令输出替换字符串

时间:2013-01-23 10:28:15

标签: windows string replace cmd

我成功设法在findstr的长文件列表中搜索字符串。我正在将findstr的输出重定向到不同的文本文件,但是我需要摆脱输出行的起始部分,它也包含源文件的引用。基数是下面的例子

echo testtest > testing.txt
findstr 'test' *.txt > output.txt //output is 'testing.txt:testtest'

我需要做这样的事情

echo testtest > testing.txt
findstr 'test' *.txt | *something* > output.txt //output is 'testtest'

CAVEAT:
我只能使用标准CMD命令,我无法在目标机器上安装新软件

3 个答案:

答案 0 :(得分:4)

这是解决Ansgar Wiechers在his answer中确定的CR / LF问题的解决方案。

我使用FOR循环迭代所有文件并在每个单独的文件上运行FINDSTR。我在每个文件之间回显一个空行。最后,我再使用一个FINDSTR删除任何不需要的空行。

@echo off
>"output.txt" (
  for %%F in (*.txt) do (
    findstr "test" "%%F"
    (echo()
  )
)
findstr . "output.txt" >"output.txt.new"
move /y "output.txt.new" "output.txt" >nul
type output.txt

答案 1 :(得分:0)

您应该使用PowerShell(powershell.exe)来开发所需的脚本。 命令行提供的文档非常有用:

PS > help about

如果您需要更多:Is there a Language Reference Manual for PowerShell?

答案 2 :(得分:-1)

在Linux系统上,您可以像以下命令一样使用awk

cat output.txt | awk 'match($0,":"){print substr($0,RSTART+1)}'