Shell 如何在emacs中的文件上运行awk命令

Shell 如何在emacs中的文件上运行awk命令,shell,emacs,awk,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/ {

如果我在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目录的一部分,我想?我试过(试着呆呆地看是否得到更好的诊断信息):

test.txt文件包含:

Angus
Lisa
Samuel
Annabel
Jack
Wookie

这是如何转义
/Sam/
,在
/
之前需要一个
\
。PS您不需要
{print$0}
,这是
awk
中的默认操作

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

这个问题与我的环境有关。我在Windows上运行,使用的MSYS相当旧,有些是1998年的awk版本,等等

对于任何一个有类似问题的人,你可以考虑删除使用MySs并从这个链接中使用GNU实用工具:


您需要在awk中引用表达式。请这样尝试:
awk'/^ABC/{print$0}test.txt
@user000001我按照上面的方法尝试了“和”,但仍然没有这样的文件或目录当前路径中是否存在此文件,只是猜测?@user000001 awk'{print}'test.txt可以工作。但是我在逃避有趣的字符时遇到问题,例如/您是否试图对文件内容或文件名运行
awk
?如果您想对文件名调用
awk
,为什么不打开
dired
缓冲区,然后从那里使用
M-!
?(更好的是,如果您启用了
dired-x
,请使用
dired jump
)。但是如果您想在缓冲区的内容上运行
awk
,可能您需要
M-
?我正在查找文本Sam-我不需要查找原始文本/Sam/(不确定您是否意识到)…使用cmd字面上的echo/Sam/"| awk'/\/Sam//'test.txt-我得到awk:///Sam//awk:意外换行或字符串结束如果您发布数据文件以及您希望的输出方式会很好。如果您只是查找其中包含
Sam
的所有行,那么
awk'Sam'test.txt
很抱歉,我尝试了,但没有得到任何输出。请参阅msg Shell命令成功ed没有输出。输入文件现在有问题。我意识到我可以使用grep,但希望能够以这种方式使用awk 2。我的错误是,我的意思是
awk'/Sam/'test.txt
如果不起作用,它必须与windows相关,因为这是基本功能,在几个linux版本中都可以正常工作。这应该在windows gawkOK中起作用。它必须是windows/minGW问题。使用它我得到awk:cmd.line:1:c:\minGW/msys/1.0/Sam/-意外换行符或字符串结尾(poinys to just after last/after Sam我尝试了单引号和双引号。
echo "/Sam/" | awk '/\/Sam\//'
/Sam/