Этот чрезвычайно субъективный материал.
Но что касается фактов. Код, подсказывающий, патент должен был просто недавно истечь, поэтому регулярные пакеты должны теперь содержать надлежащий вывод подсказок шрифта. Теперь проблема состоит в том, что не все шрифты поддерживают вывод подсказок шрифта (я понятия не имею ли дело обстоит так системного шрифта Ubuntu). Попробуйте шрифты Dejavu, они действительно поддерживают шрифт, подсказывающий в течение некоторого времени.
Что касается несистемных шрифтов, попытайтесь также настроить настройки в KDE/Gnome. Оба позволят Вам выбирать стиль вывода подсказок шрифта (и искажение шрифта).
Эта ссылка показывает некоторым старым для OpenSuSe, но это содержит снимки экрана и для KDE и для Gnome, и настройки действительно не изменились: http://opensuse-community.org/SubpixelHinting
Обычное sort
команда не обеспечивает включенный способ указать Ваш определенный "словарь", и в то время как grep
команда позволяет Вам обеспечивать файл регулярных выражений, она не изменит порядок вывода. Но можно соединить обоих в простом foreach
цикл - вот является примером, который работает в оболочке удара:
for i in `cat fileofregexp`; do grep "$i" myinputfile; done
Это проводит каждую regexp строку из Вашего файла регулярных выражений один за другим и выводы любое соответствие от Вашего inputfile, таким образом, получающийся вывод будет отсортирован по Вашему порядку regexp. Обратите внимание, что любые строки в Ваших inputfile, которые не соответствуют вообще, не доберутся до вывода.
Приложение: Согласно просьбе вот версия с помощью a while
цикл:
while IFS= read -r i; do grep "$i" myinputfile; done < fileofregexp
Это не точно, как Вы структурировали его, но, учитывая Вашу фактическую цель будет более просто захватить часть перед двоеточием и видом этим. Вот сценарий Perl, который накапливает строки от отдельных ключей сортировки в записях отдельного массива и сбрасывает vcard, когда он достигает конца.
#!/usr/bin/perl -n
BEGIN {
@headers = qw(BEGIN VERSION FN N NICKNAME EMAIL X- TEL ADR ORG TITLE BDAY URL ROLE NOTE END);
for $h (@headers) { $data{$h} = ""; }
}
if (/^([^:]+):/) {
$data{exists $data{$1} ? $1 : "X-"} .= $_;
if ($1 eq 'END') {
for $h (@headers) { print $data{$h}; $data{$h} = ""; }
}
} else {
print;
}
И если Вы действительно хотите полную regexp гибкость, выполняете итерации по regexps вместо того, чтобы искать ключ в хеше.
#!/usr/bin/perl -n
BEGIN {
@regexps = qw(^BEGIN:VCARD\r$ ^VERSION[^A-Z] ^FN[^A-Z] ^N[^A-Z] ... ^END:VCARD\r$);
for $r (@regexps) { $data{$r} = ""; }
}
for $r (@regexps) {
next unless $_ =~ $r;
$data{$r} .= $_;
last;
}
if ($_ =~ $regexps[@regexps-1]) {
for $r (@regexps) { print "++", $data{$r}; $data{$r} = ""; }
}