команда unix - игнорировать "The" при сортировке - PullRequest
1 голос
/ 06 декабря 2010

Я перечисляю каталоги, и я хотел бы отсортировать по имени, но игнорировать ведущий «The», то есть вывод должен быть:

Apple
The Banana
Orange

, а не

Apple
Orange
The Banana

Чтолучший способ сделать это?

Ответы [ 3 ]

2 голосов
/ 06 декабря 2010

На самом деле я собираюсь изложить это в письменном виде.

Я подозреваю, что следующие действия сделают то, что вы хотите, чтобы они сделали:

ls -d * | sed 's/^The /\t/' | sort -b | sed 's/^\t/The /'

Я объясню.ls -d * перечисляет все каталоги.sed -r 's/^The /\t/' заменяет все начальные "The" на вкладки (заполнитель пробелов), sort -b сортирует, игнорируя начальные пробелы (вкладка), а sed 's/^\t/The /' заменяет все эти начальные вкладки на "The" снова.

1 голос
/ 06 декабря 2010
ls | sed -e 's/^The \(.*\)/\1, The/' | sort | sed -e 's/\(.*\), The$/The \1/'
1 голос
/ 06 декабря 2010

Это решение работает, но глупо и не будет работать во всех случаях (например, есть двойные пробелы)

find . -type d | grep -o "[^./].*" | sed 's/^The/ /' | sort | sed 's/  /The /'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...