如何在Cygwin中正确管道命令(使用Windows)?

时间:2016-03-02 17:11:36

标签: windows cmd cygwin pipeline

我正在尝试在文本文件上运行实验来获取字频率。我尝试使用以下命令:

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中放置我想编辑的任何文件?

1 个答案:

答案 0 :(得分: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...