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