2016-03-02 95 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...