【问题标题】:mawk script works under linux, but not windowsmawk 脚本适用于 linux,但不适用于 windows
【发布时间】:2021-10-27 14:55:00
【问题描述】:

我正在尝试从 CSV 文件中提取一些数据,而在 linux 下运行的命令行不适用于 windows 的 mawk。

使用 WSL,以下命令按预期工作:

    mawk -F, '$16 == "Good" {print $4}' < *GOL*_approval.txt

但是,在 powershell 中,以下命令给出了完全不同的结果:

    mawk -F',' '$16 == "Good" {print $4}' *GOL*_approval.txt

我认为这可能是一个引用选项,但我已经尝试了我能想到的一切。

【问题讨论】:

  • 请发布一些具有相关预期输出的示例数据以及您使用该数据得到的完全不同的结果。不要将它们作为 cmets、图像、表格或非现场服务的链接发布,而是使用文本并将它们包含在您的原始问题中。谢谢。

标签: powershell awk


【解决方案1】:
  • PowerShell on Windows 不支持类 Unix 平台上的 PowerShell (Core) 中所谓的 native globbing,因此您必须解决您的 globbing(通配符)模式明确的。

  • 至少到 PowerShell 7.1,当将参数传递给嵌入了 " 字符的外部程序时,一个长期存在的错误要求它们手动转义为 \"

    • 这可能最终会在即将发布的 v7.2 中得到解决 - 请参阅 this answer
# Manual escaping of " as \" is required up to v7.1
# This may change in v7.2
mawk -F',' '$16 == \"Good\" {print $4}' (Get-Item *GOL*_approval.txt).FullName

【讨论】:

  • 嘎!就是这样!我不得不逃离“的”。是的,这让我发疯了!谢谢!!
  • 很高兴听到它有帮助,@SamAlleman;我的荣幸。我添加了指向答案的链接以及其他信息。
【解决方案2】:

你的 mawk 是什么版本? http://gnuwin32.sourceforge.net/packages/mawk.htm?

另外,您在&lt; *GOL*_approval.txt 之前的第二个项目上缺少&lt;,并在-F',' 中添加了额外的'

【讨论】:

  • Powershell 不允许我使用“
  • @SamAlleman,使用mawk -W version 打印版本号。
  • 这应该是评论,而不是答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 2011-10-27
相关资源
最近更新 更多