Сортировать файл только по первым двум столбцам и сохранить порядок ввода в случае, если столбцы имеют одинаковые значения - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть входной файл, строки которого я хочу отсортировать только по 2 первым столбцам.И я хотел бы знать, есть ли какой-нибудь способ сделать это с помощью команды сортировки в bash.

Пример.Входной файл:

cat checkstart.txt

dev XCUBOBS149 /etc/init.d/DSEngine_srv
dev XCUBOBS150 /etc/init.d/DSEngine_srv
dev XCUBOBS149 NO_LINKS_TO_STARTSCRIPTS
dev XCUBOBS149 ufabric:x:46000:46000::/home/ufabric:/bin/bash
dev XCUBOBS149 export JAVA_HOME=/soft/jdk/jdk1.7.0_79/

Я пытаюсь с

sort -b -k1,2 checkstart.txt

но результат не тот, который я ожидаю, потому что он сортирует все строки по буквенно-цифровому порядку:

dev XCUBOBS149 /etc/init.d/DSEngine_srv
dev XCUBOBS149 export JAVA_HOME=/soft/jdk/jdk1.7.0_79/
dev XCUBOBS149 NO_LINKS_TO_STARTSCRIPTS
dev XCUBOBS149 ufabric:x:46000:46000::/home/ufabric:/bin/bash
dev XCUBOBS150 /etc/init.d/DSEngine_srv

Я хотел бы получить файл результатов, подобный этому:

dev XCUBOBS149 /etc/init.d/DSEngine_srv
dev XCUBOBS149 NO_LINKS_TO_STARTSCRIPTS
dev XCUBOBS149 ufabric:x:46000:46000::/home/ufabric:/bin/bash
dev XCUBOBS149 export JAVA_HOME=/soft/jdk/jdk1.7.0_79/
dev XCUBOBS150 /etc/init.d/DSEngine_srv

1 Ответ

0 голосов
/ 29 ноября 2018

Вы ищете алгоритм сортировки стабильный .sort обеспечивает один.Вы можете включить его с помощью опции -s.

$ sort -s -k1,2 checkstart.txt
dev XCUBOBS149 /etc/init.d/DSEngine_srv
dev XCUBOBS149 NO_LINKS_TO_STARTSCRIPTS
dev XCUBOBS149 ufabric:x:46000:46000::/home/ufabric:/bin/bash
dev XCUBOBS149 export JAVA_HOME=/soft/jdk/jdk1.7.0_79/
dev XCUBOBS150 /etc/init.d/DSEngine_srv
...