Как перенести данные из Evolution в Thunderbird? [Дубликат]

Поскольку порядок может измениться, это займет немного скриптов. Вот версия Perl:

#!/usr/bin/perl -nl

my $time = $1 if /\[(.+?)\]/; 
my $city = $1 if /city=(.*?)(&|$)/;
my $lang = $1 if /language=(.*?)(&|$)/;
my $x = $1 if /\bx=(.*?)(&|$)/; 
my $y = $1 if /\by=(.*?)(&|$)/; 
my $z = $1 if /\bz=(.*?)(&|$)/;
print join ",", ($time, $city, $lang, $x, $y, $z)

Сохраните это как foo.pl, сделайте его выполнимым (chmod +x foo.pl) и запустите его следующим образом:

./foo.pl file.txt

Вы также можете сжать

Объяснение

-n означает «читать входной файл по строкам и применять сценарий к каждой строке. [

]

f7] добавляет новую строку для каждого вызова print и переводит строки новой строки из каждой строки ввода.

В каждом случае мы используем регулярное выражение для поиска целевой строки и присваиваем ее переменной, если совпадение было первое регулярное выражение, \[(.+?)\] соответствует любому значению между [ и первым ]. Скобки вокруг .+ - это группы захвата, и мы будем ссылаться на то, что было зафиксировано как $1. Итак, $time ] будет тем, что было внутри [ ].

Другие регулярные выражения следуют той же идее. \b означает «символ без слова» и гарантирует, что y= не будет соответствовать city и т. д. (&|$) означает захват групп a & или конец строки ($) и необходим для захвата паттернов в самом конце t он линия.

Наконец, мы join с запятыми и напечатаем их.

13
задан 16 December 2011 в 02:14

0 ответов

Другие вопросы по тегам:

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