windows - 在 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
?
解决方案
在 Windows 上运行 awk 时的标准建议:
a) 不要这样做,安装 cygwin 并从那里运行 awk
b) 如果“a”不可能,则创建一个文件“foo.awk”,将您的脚本存储/err/ { $0 = "\033[32m" $0 "\033[39m" }; 1
在其中,然后运行它awk -f foo.awk
以避免 Windows 噩梦般的引用规则。
推荐阅读
- python - Python 线程和套接字
- java - 自定义读取、拆分和添加到大文件中的对象列表
- ios - Objective-C中如何在AVAudioSession的setCategory方法中设置几个选项?
- android - 为 ARM 编译 32 位二进制文件
- xamarin.forms - 如果绑定数组没有项目,则隐藏 Xamarin 表单 StackLayout
- git - Git commit --amend 别名挂起
- php - 使用三元运算符和引用值的 foreach 中的意外行为
- python - pandas 语法错误在多个条件下返回
- arrays - 类型末尾的双问号是什么意思?
- sql - ms sql server如何检查表是否有“id”列并在“id”存在时计算行数