如何在emacs中对文件运行awk命令

时间:2013-09-16 14:58:06

标签: shell emacs awk

如果我正在访问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

2 个答案:

答案 0 :(得分:2)

问题与我的环境有关。我在Windows上运行并使用相当陈旧的MSYS,一些来自1998年的awk版本等等。

对于遇到类似问题的其他人,您可以考虑删除使用msys并使用此链接中的gnu实用程序:

http://sourceforge.net/projects/ezwinports/

答案 1 :(得分:1)

这是如何逃避/Sam/\之前需要/。 PS你不需要{print $0},它是awk中的默认操作。

echo "/Sam/" | awk '/\/Sam\//'
/Sam/