Вид регулярными выражениями

Этот чрезвычайно субъективный материал.

Но что касается фактов. Код, подсказывающий, патент должен был просто недавно истечь, поэтому регулярные пакеты должны теперь содержать надлежащий вывод подсказок шрифта. Теперь проблема состоит в том, что не все шрифты поддерживают вывод подсказок шрифта (я понятия не имею ли дело обстоит так системного шрифта Ubuntu). Попробуйте шрифты Dejavu, они действительно поддерживают шрифт, подсказывающий в течение некоторого времени.

Что касается несистемных шрифтов, попытайтесь также настроить настройки в KDE/Gnome. Оба позволят Вам выбирать стиль вывода подсказок шрифта (и искажение шрифта).

Эта ссылка показывает некоторым старым для OpenSuSe, но это содержит снимки экрана и для KDE и для Gnome, и настройки действительно не изменились: http://opensuse-community.org/SubpixelHinting

2
13.04.2017, 15:36
2 ответа

Обычное 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
3
27.01.2020, 22:01

Это не точно, как Вы структурировали его, но, учитывая Вашу фактическую цель будет более просто захватить часть перед двоеточием и видом этим. Вот сценарий 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} = ""; }
}
1
27.01.2020, 22:01

Теги

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