Как я могу отсортировать вывод awk, игнорируя определенный символ?

382
zyy

Я пытаюсь распечатать китайский шрифт, который есть на моем ноутбуке, и отсортировать вывод по названию, на которое можно сослаться LaTeX. Это можно сделать с помощью следующей команды:

fc-list :lang=zh-cn | awk -F": " '{$1=""; print}' | sort 

Он находит список шрифтов, затем после первого появления :и один пробел, в котором отображаются имена шрифта. Тогда мы, конечно, сортируем это.

Проблема здесь в том, что есть шрифты с именем like .PingFang SC, которые отсортированы в самое начало и не соответствуют остальным. Есть ли способ сортировки без учета периода?

Возможно, не удастся удалить точку, которая изменит фактическое имя шрифта и, таким образом, затруднит ссылку.

1

1 ответ на вопрос

1
Scott

Попробуйте использовать sort -d («порядок словаря», который, кажется, игнорирует не-буквенные символы):

$ printf "Orange\n.PingFang\nRed\n" | sort .PingFang Orange Red  $ printf "Orange\n.PingFang\nRed\n" | sort -d Orange .PingFang Red 
Это работает! Спасибо! У вас есть идеи по пустым выводам, полученным в результате добавления дополнительного пространства? zyy 5 лет назад 0
Извините, но я не понимаю, что вы говорите. Можете ли вы отредактировать ваш вопрос, чтобы показать некоторые примеры ваших входных данных (то есть выходных данных `` fc-list``) и ваших выходных данных? Scott 5 лет назад 0
Я вижу, в чем проблема, дополнительный пробел получается из команды `$ 1 =" "`. Теперь все хорошо, спасибо! zyy 5 лет назад 0

Похожие вопросы