脚本/命令(基于命令行或PowerShell)删除包含特定字符串值的整行

时间:2016-04-05 05:21:55

标签: powershell batch-file vbscript

我正在寻找一个命令或任何我可以在Windows操作系统上使用的脚本来删除* .txt或* .csv文件中的整行。

案例:我有一个名为abc.csv的文件,其中包含下面提到的行。我想删除包含.dllvolume的所有行。

abc.csv

value.dll
setup.exe
installer.exe
setup.dll
volume serial
serial

执行脚本/命令后,我希望abc.csv只留下行

输出文件( abc.csv

setup.exe
installer.exe
serial

请建议怎么做?

2 个答案:

答案 0 :(得分:0)

这是一个使用Ruby

从命令行运行的一行脚本
ruby -ne 'print unless $_[/unwanted/]' < file.txt

答案 1 :(得分:0)

批处理文件解决方案:

@echo off
if not exist "abc.csv" goto :EOF
%SystemRoot%\System32\findstr.exe /I /V /C:".dll" /C:"volume" "abc.csv" >"%TEMP%\abc.csv"
move /Y "%TEMP%\abc.csv" "abc.csv"

包含 findstr 的行,因为文件/I.dllvolume的{​​{1}}不区分大小写(忽略大小写)并且输出因为abc.csv(inVerted)所有行都不包含这两个字符串中的一个。

对于第三行可能更好:

/V

现在使用正则表达式%SystemRoot%\System32\findstr.exe /I /R /V /C:"\.dll$" /C:"^volume" "abc.csv" >"%TEMP%\abc.csv" 必须在一行的末尾找到,并且必须在行的开头找到.dll以忽略输出中的那一行。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • volume
  • echo /?
  • findstr /?
  • goto /?
  • if /?

另请阅读Microsoft有关Using command redirection operators

的文章