2009-01-09 46 views
7

我有一個巨大的製表符分隔的文件,我想在第二列進行排序。我需要使用製表符作爲cygwin排序中的字段分隔符。所以我需要這樣的東西:如何使用cygwin排序對第n列中的製表符分隔文件進行排序?

sort -t \t -k 2,2 in.txt > out.txt 

但命令提示符字面上計算'\ t'而不是字符串作爲製表符。請注意,我需要在運行Cygwin的Windows計算機上執行此操作。變化如

sort -t "\t" 
sort -t \"\t\" 

不起作用,也沒有把這個放在一個cmd文件中,實際的選項卡代替上面的\ t。

編輯:使用DOS外殼或Cygwin bash外殼的解決方案是好的。

+0

您使用的是DOS殼或cygwin外殼(默認爲bash)的? – PEZ 2009-01-09 00:42:49

回答

13

在我的機器(Mac的bash提示符,GNU那種...)這個作品:

sort -t ' ' -k 2,2 in.txt > out.txt 

(一個 「真正的」 雙引號之間的標籤)

爲了讓標籤有I型CTRL-V,TAB(CTRL-V隨後TAB)。編輯:我現在已經在cygwin提示符的Windows機器上測試過它,它在那裏的工作原理是一樣的(如我所料,bash是bash)。

10

您需要在\ t前添加一個$符號才能打開字符串插值,因此該選項卡實際上會被髮送以進行排序。這應該在任何終端工作:

sort -t $'\t' -k 2,2 in.txt > out.txt 
+0

這不會在Windows命令提示符下運行。我得到的錯誤是:「sort:多字符選項卡`$ \\ t'」 – Nikhil 2009-08-20 18:03:33

1

在Windows命令提示符下,我發現最簡單的解決方案是用先禁用標籤完成:

cmd /f:off 

然後你就可以輸入文字製表符。

0

我想在Windows上使用GnuWin32排序的解決方案,但以上解決方案都不適用於我的命令行。但是下面的批處理文件(.bat)起作用了,這正是我想要的。在雙引號內鍵入製表符。

C:>貓foo.bat

排序-K3 -t」「tabfile.txt

0

任何人都看到了諷刺意味?
你赴湯蹈火得到製表符是一個標籤...

在Windows命令提示符下,我能夠用做:
C:\ BIN \排序-t「(實際翼片) 「但只啓動CMD/F後:關閉(如上面所暗示的)

在Windows bat文件,我能夠做同樣的事情,只要文本編輯器(的Notepad2 :-)設置爲插入標籤爲標籤,不空間。

有一些很受歡迎的提示,使用-t $'\ t」的,但我試圖約2^16的這個組合沒有運氣或剩餘的頭髮。

相關問題