如果我正在访问emacs中的文件,我希望能够运行一个简单的awk命令,例如
awk /Sam/ { print $0 }.
我将如何构建它。
我试过了:
m-! - to be able to run a shell cmd
awk '/Sam/ { print $0 }' test.txt
但后来我收到了这个错误:
awk: c:/MinGW/msys/1.0/Sam/ { print }
awk: ^ syntax error
awk: c:/MinGW/msys/1.0/Sam/ { print }
awk: ^ syntax error
errcount: 2
只运行awk'{print}'test.txt正常工作
我使用minGW在Windows 7上运行,我的shell设置为:
echo %SHELL%
C:/MinGW/msys/1.0/bin/bash.exe
如何逃离/ Sam /?它认为它是我认为的exe目录的一部分?我试过(试着看看是否能获得更好的诊断信息):
gawk '\/Sam\/ { print $0 }' test.txt
gawk: cmd. line:1: \/Sam\/ { print }
gawk: cmd. line:1: ^ backslash not last character on line
test.txt文件包含:
Angus
Lisa
Samuel
Annabel
Jack
Wookie
答案 0 :(得分:2)
问题与我的环境有关。我在Windows上运行并使用相当陈旧的MSYS,一些来自1998年的awk版本等等。
对于遇到类似问题的其他人,您可以考虑删除使用msys并使用此链接中的gnu实用程序:
答案 1 :(得分:1)
这是如何逃避/Sam/
,\
之前需要/
。 PS你不需要{print $0}
,它是awk
中的默认操作。
echo "/Sam/" | awk '/\/Sam\//'
/Sam/