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

StackOverflow https://stackoverflow.com/questions/426647

  •  06-07-2019
  •  | 
  •  

Вопрос

У меня есть огромный разделенный табуляцией файл, который я хочу отсортировать по второму столбцу. Мне нужно использовать символ табуляции в качестве разделителя полей в сортировке 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, подойдет.

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

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

cmd /f:off

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

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

C: > cat foo.bat

sort -k3 -t " & Quot; tabfile.txt

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top