首页 > 解决方案 > 在 Windows awk 上转义反斜杠和括号

问题描述

我有一个awk要在cmd. 以下命令在 中运行良好bash,但在 windows 上失败cmd

echo errr | awk '/err/ { $0 = "\033[32m" $0 "\033[39m" }; 1'

我在 Windows 上收到以下错误:

awk: cmd. line:1: '/err/
awk: cmd. line:1: ^ invalid char ''' in expression

经过一些问题后,我将命令更改为:

 echo errr | awk "/err/ { $0 = "\033[32m" $0 "\033[39m" }; 1"

但这给了我:

awk: cmd. line:1: /err/ { $0 = \033[32m $0 \033[39m }; 1
awk: cmd. line:1:              ^ backslash not last character on line
awk: cmd. line:1: /err/ { $0 = \033[32m $0 \033[39m }; 1
awk: cmd. line:1:              ^ syntax error

如何移植我的命令以在其中工作cmd

标签: windowsawk

解决方案


在 Windows 上运行 awk 时的标准建议:

a) 不要这样做,安装 cygwin 并从那里运行 awk

b) 如果“a”不可能,则创建一个文件“foo.awk”,将您的脚本存储/err/ { $0 = "\033[32m" $0 "\033[39m" }; 1在其中,然后运行它awk -f foo.awk以避免 Windows 噩梦般的引用规则。


推荐阅读