2016-03-02 94 views
0

我试图在文本文件上运行实验来获取词频。我试着用下面的命令:如何在Cygwin中正确管道命令(使用Windows)?

gawk -F"[ ,'\".]" -v RS="" '{for(i=1;i<=NF;i++) words[$i]++;}END{for (i in words) print words[i]" "i}' myfile.txt | uniq -c | sort -nr | head -10 

,但我得到了以下错误:

gawk: cmd. line:1: fatal: cannot open file '|' for reading (No such file or directory) 

我读的地方, ';'可以用来代替'|'在Windows机器上,尽管这会导致类似的错误。

看起来好像它正在读取'|'的第一个实例作为文件名。这是Windows机器上管道的正确方法吗?使用Cygwin在Windows机器上可以使用管道吗?

编辑:我将cygwin添加到Windows PATH变量,然后使用cmd窗口。如果我想实际使用cygwin.exe,是否意味着我将不得不在C:/ cygwin中放置任何我想要编辑的文件?

+0

我认为你需要在Bash和不CMD运行。我没有Windows来测试。 – dawg

+0

编辑您的问题以明确指出您是在Cygwin shell窗口还是在Windows cmd窗口中执行命令。如果前者那么你得到的错误是莫名其妙的。如果后者 - 不这样做! –

+0

@Ed Morton谢谢,检查我的编辑。 – hjalpmig

回答

1

好的,现在我明白了 - 不要那么做!从cygwin执行cygwin命令,而不是从Windows执行。要在任何文件上执行cygwin命令,只需将该命令的完整路径给予该文件(但以/cygdrive/开头),则不必须在C:/cygwin之下,例如,从一个cygwin shell窗口,看看有什么在普通的Windows文件夹C:\Documents and Settings

$ ls -Q '/cygdrive/c/Documents and Settings' 
"All Users" "Default" "Default User" "desktop.ini" "emorton" etc...