2015-06-30 41 views
1

我们有以下UNIX命令:Unix的尾巴和grep等同于Windows

/usr/bin/tail -n 1 %{path} | grep --silent -F "%{message}" && rm -f %{path}% 

此:

  1. /usr/bin/tail -n 1 %{path}得到最后一行的path变量是指

  2. 文件中
  3. | grep --silent -F "%{message}"将输出输出到另一个命令grep,该命令检查前一个命令i的输出人民共同path

上面一行是在配置文件中,其是允许将呼叫到相等的message

  • && rm -f %{path}%如果这两个值相等,则删除refered到文件中的值底层操作系统。

    我想在windows上复制functionalirty。 我尝试这样做:

    command => 'powershell -Command "& {Get-Item $args[0] | ? { (Get-Content $_ -Tail 1).Contains($args[1]) }| Remove-Item -Force}" "'%path%'" "'%message%'"' 
    

    这引发错误:

    Error: Expected one of #, {, } at line 15, column 131 (byte 498) 
    

    线15是包含在上述的配置文件中的行。

    感谢

  • +0

    如果您不能安装Linux或其他像样的操作系统,也许从一个借用的工具:-) http://unxutils.sourceforge.net –

    +0

    不下载从SourceForge什么 - HTTP:// arstechnica .com/information-technology/2015/05/sourceforge-grabs-gimp-for-windows-account-wraps-installer-in-bundle-pushing-adware/ – npocmaka

    +0

    你最好使用Powershell脚本来完成所有这些工作。如果你需要一个多用途的grep/tail,那么是的,带上grep和tail的Windows端口,如果没有,你可以创建一个Powershell脚本并使用'Select-Object -last 1',然后对收到的字符串运行正则表达式匹配,然后如果你收到一个有效的路径,使用del。 – Vesper

    回答

    1

    您可以使用tailhead.bat(纯批处理脚本工具),可以用来显示持续/的Grep一个file.Instead的拳头线就可以使用findstrfind

    tailhead.bat tailhead -file=%pathToFile% -begin=-3|find "%message%" 
    
    +0

    谢谢,但arwe发现和findstr定义?命令提示符不能识别它们中的任何一个,那么它们在你给出的例子中如何工作? – user1052610

    +0

    @ user1052610 - findstr和find是在windows中生成的。检查'echo%path%'命令的输出。你应该有'C:\ windows \ system32' – npocmaka

    +0

    谢谢,添加到路径中,现在发现被识别。这是结束命令的正确方法:&& del%pathToFile%?尝试&& del myFileName,txt作为测试,但没有奏效。 – user1052610

    2

    PowerShell解决方案:

    $path = 'C:\path\to\your.txt' 
    $message = 'message' 
    
    Get-Item $path | ? { (Get-Content $_ -Tail 1).Contains($message) } | Remove-Item -Force 
    

    如果要从命令行运行它,请像这样调用它:

    powershell -Command "& {Get-Item $args[0] | ? { (Get-Content $_ -Tail 1).Contains($args[1]) } | Remove-Item -Force}" "'C:\path\to\your.txt'" "'message'" 
    
    +0

    谢谢。按照您的示例中输入的内容运行,我得到以下内容:术语'C:\ Program'不被识别为cmdlet的名称,函数.. ,,或者术语'C:\ Windows \ System32'不被识别为cmdlet的名称,函数... – user1052610

    +0

    @ user1052610尝试向参数添加嵌套的单引号。查看更新的答案。 –

    +0

    这是说:错误:在输入{,----列133在移除项目强制之后}的第13行,第134列(第466个字符)处的#,{,}“ – user1052610