Powershell 将awk筛选转换为windows命令行等效项

Powershell 将awk筛选转换为windows命令行等效项,powershell,awk,command-line,Powershell,Awk,Command Line,我需要一个非常具体的问题的帮助。我需要在不安装第三方软件的情况下,将以下UNIX行替换为windows等效行 awk -F ";" '$6 ~/2019-03-11/ {print}' myInputFile.csv >> myOutputFile.csv 线路的功能: 它扫描myInputFile.csv,其中列分隔符是,用于第6列中的文本2019-03-11,并将行追加到myOutputFile.csv 不幸的是,我不能在客户机上安装gawk或类似的东西 我已经很多年没有使用w

我需要一个非常具体的问题的帮助。我需要在不安装第三方软件的情况下,将以下UNIX行替换为windows等效行

awk -F ";" '$6 ~/2019-03-11/ {print}' myInputFile.csv >> myOutputFile.csv
线路的功能:

它扫描
myInputFile.csv
,其中列分隔符是
,用于第6列中的文本
2019-03-11
,并将行追加到
myOutputFile.csv

不幸的是,我不能在客户机上安装gawk或类似的东西


我已经很多年没有使用windows机器了,完全迷路了-(

我相信您在Powershell中所追求的是:

$ Get-Content .\myInputFile.csv | %{ if ($_.Split(';')[5] -match "2019-03-11") { $_; } } >> .\myOutputFile.csv
我不会因为这件事的结果而大发雷霆


如果要从bat文件调用此函数,必须执行一些操作。

findstr.exe的正则表达式功能相当有限,但这应该足够了:

findstr "^[^;][^;]*;[^;][^;]*;[^;][^;]*;[^;][^;]*;[^;][^;]*;2019-03-11" <myInputFile.csv >>myOutputFile.csv
myOutputFile.csv
另一种纯cmdline方式(前提是至少有7列):


For/F“tokens=1-6*delims=;%A in('findstr“2019-03-11”你是否考虑过安装或等效,直接从代码> CMD < /代码>中使用AWK。你也可以使用一些来自WioZZE的东西。我的想法也和你在一起。抱歉,刚刚读了你的行,你不能安装CygWin。<代码> AWK < /Cube >认为列是零1还是1?大多数在POSH中这样做的方法将是零-1。[grin]////此外,如果kvantour的解决方案不合适,请发布输入的样本行以及该行中所需的输出。感谢所有人的回答。我无法发布原始文件(机密)中的任何内容,但它是一个普通的CSV文件,其中输入用分号(;)而不是逗号(,)分隔。列计数在awk中以1开头,因此我想按第6列筛选文件。在Powershell中进行筛选。谢谢您的回答,但我无法在计算机上安装任何内容。它需要是本机批处理脚本。:-(@PeterKerschbaumer AFAIK Powershell是windows本机的。(
Start>“搜索程序和文件”>键入“Powershell”
)@PeterKerschbaumer看起来有点自大,显然你可以从bat文件调用Powershell脚本。我相信这就是你想要的。(更新了答案并添加了额外链接)@PeterKerschbaumer除非你运行的是古老的Windows版本,否则这是本机的。@kvantour谢谢你的教训。:-)
For /F "tokens=1-6* delims=;" %A in ('findstr "2019-03-11" ^<myInputFile.csv') do @if "%F"=="2019-03-11" (>>myOutputFile.csv Echo %A;%B;%C;%D;%E;%F;%G)