Как отсортировать разделенный табуляцией файл в n-м столбце с помощью сортировки cygwin? - PullRequest
9 голосов
/ 09 января 2009

У меня есть огромный разделенный табуляцией файл, который я хочу отсортировать по его второму столбцу. Мне нужно использовать символ табуляции в качестве разделителя полей в сортировке Cygwin. Поэтому мне нужно что-то вроде этого:

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

Но командная строка оценивает '\ t' буквально, а не как символ табуляции. Обратите внимание, что мне нужно сделать это на компьютере под управлением Windows, на котором запущен Cygwin. Вариации, такие как

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

не работает, и не помещает это в cmd-файл с реальной вкладкой вместо \ t выше.

Редактировать: Хорошо подходит решение, использующее оболочку DOS или оболочку Cygwin bash.

Ответы [ 5 ]

14 голосов
/ 09 января 2009

На моей машине (приглашение Mac bash, сортировка GNU ...) это работает:

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

(«настоящая» вкладка между кавычками.)

Чтобы получить вкладку, я набираю CTRL-V, TAB (CTRL-V, затем TAB).

РЕДАКТИРОВАТЬ: теперь я протестировал его на компьютере с Windows из командной строки cygwin, и он работает там же (как я и ожидал, bash - это bash).

12 голосов
/ 17 июля 2009

Вам нужно добавить знак $ перед \ t, чтобы включить интерполяцию строк, чтобы вкладка фактически отправлялась для сортировки. Это должно работать в любом терминале:

sort -t $'\t' -k 2,2 in.txt > out.txt
1 голос
/ 02 апреля 2011

В командной строке Windows самое простое решение, которое я нашел, - сначала отключить завершение табуляции с помощью:

cmd /f:off

Затем вы можете ввести буквенный символ табуляции.

0 голосов
/ 15 сентября 2015

Кто-нибудь видит здесь иронию?
Вы должны прыгать через обручи, чтобы символ табуляции стал вкладкой ...

В командной строке Windows я смог сделать это с помощью:
c: \ bin \ sort -t "(фактическая вкладка)", но только после запуска cmd / f: off (как указано выше)

В Windows bat файле я мог делать то же самое, если текстовый редактор (notepad2 :-) был настроен на вставку вкладок в виде вкладок, а не пробелов.

Есть несколько популярных подсказок, чтобы использовать -t $ '\ t ", но я попробовал около 2 ^ 16 комбинаций этого без удачи или оставшихся волос.

0 голосов
/ 12 июня 2014

Я хотел найти решение для сортировки GnuWin32 в Windows, но ни одно из перечисленных выше решений не работало для меня в командной строке. Но следующий пакетный файл (.bat) сработал, чего я и хотел. Введите символ табуляции в двойных кавычках.

C:> cat foo.bat

sort -k3 -t "" tabfile.txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...