Сортировка многострочных выражений

У меня была аналогичная проблема, но я решил ее, перейдя с

mail.domain1.tld:587/user=user1@domain2.tld/ssl

-:

mail.domain1.tld:587/tls/user=user1@domain2.tld

Верхний синтаксис может работать для режима smtpd _tls _оболочки _, обычно работающего на порту 465. Я думаю, что это связано с тем, что команда STARTTLS не выдается pine в первом способе написания, но Я не уверен.

-1
29.09.2019, 11:17
1 ответ
perl -0ne 'print join "\\", sort split(/^\\/m)' input.txt 

Это основано на ответе Сортировать файл по группе строк , на который ссылается @αғsнιη.

Он разбивает весь входной файл на массив, используя регулярное выражение ^\в качестве разделителя. Затем он печатает отсортированный массив с элементами массива, соединенными одним символом \.

Соединение необходимо, так как оно возвращает символы \, которые были удалены во время операции разделения.


Обратите внимание, что :этот сценарий совершенно не заботится о содержании определений глоссария. Все, что он делает, это разбивает входные данные на массив на основе строк, начинающихся с \.

Это означает, что если есть какие-либо входные строки перед первой записью \newglossary, они будут напечатаны в порядке сортировки (, поскольку они становятся элементом массива 0 ). Если таких строк нет, то элемент массива 0 пуст и печатается первым (, потому что пустая строка сортируется раньше всего остального ), но не производит видимого вывода (, потому что она пуста ).

Если есть строки текста после последней записи \newglossary,они будут напечатаны везде, где эта запись отсортирована, потому что сценарий считает их частью этой записи .

То же самое происходит, если между двумя записями есть произвольный текст. -Эти строки становятся частью первой из этих двух записей.

2
28.01.2020, 05:09

Теги

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