Я просто преобразовал в Kubuntu от Xubuntu на Точном. Выбрал kdm в качестве менеджера по оформлению и выполнения, таким образом, при следующем входе в систему был подарен 3 записей паролей всего - kdm экран входа в систему затем брелок для ключей гнома для Ubuntu Один и kwallet для Хрома. Сумасшедший!
Таким образом, мое решение в настоящее время: 1) используйте LightDM вместо KDM, который разблокировал брелок для ключей гнома, автоматически 2) настраивает kwallet с пустым паролем 3), использование домашнее шифрование папки
Это является немного слишком окольным для моего вкуса, но он может представлять интерес для Вас:
perl -p -e '
BEGIN{
@months=qw(jan feb mar apr may jun jul aug sep oct nov dec);
$month_number{$_}=++$i for @months;
$months_regex= join "|",@months;
}
s/^\s*($months_regex)[a-z]*\s+/$month_number{lc $1}-/i'
/var/log/syslog
Это распечатает (к stdout) строки журнала с датой в формате MM-DD (без нулевого дополнения для чисел месяца), который Вы, кажется, удобный парсинг. Это обрабатывает имена месяца, данные полностью и имена месяца, данные в 3 формах символов, независимо от случая.
Править
Если Вы хотите нулевое дополнение для чисел месяца, просто заменяете ++$i
с sprintf "%02d",++$i
ОТРЕДАКТИРУЙТЕ 2 Две ошибки, зафиксированные благодаря комментариям l0b0 ниже:
sprintf "%02d", ++$i
Вот то, как я сделал это в Perl, хотя я предпочитаю некоторые из других ответов!
use DateTime::Format::Strptime;
my $parser = DateTime::Format::Strptime->new( pattern => '%B %d %Y');
m/^(\w+ \d+)/;
print $parser->parse_datetime("$1 " . DateTime->now->year)->ymd;
sudo perl -n -e 'use DateTime::Format::Strptime; my $parser = DateTime::Format::Strptime->new( pattern => "%B %d %Y"); m/^(\w+ \d+ )(.*)/; print ($parser->parse_datetime("$1" . DateTime->now->year)->ymd, " ", $2, "\n");' /var/log/syslog
– l0b0
23.05.2013, 15:49
Это было бы в порядке?
Каждая строка, содержащая дату> 10-й и <18-й:
awk '$2 > 10 && $2 < 18 {print}' file
Включая имя месяца:
awk '$1 == "May" && $2 > 10 && $2 < 18 {print}' file
Месяцы промежутка, 27-го апреля до 4-го мая:
awk '($1 == "Apr" && $2 > 26) || ($1 == "May" && $2 < 5){print}' file
Обновление:
Поверхностный вариант с помощью getline:
awk '"date '+%m%d' -d " $1$2 | getline date; close("date"); \
date > 426 && date < 505 {print}' file
Используя сценарий:
awk -v from=520 -v to=523 '
{
d = ((match("JanFebMarAprMayJunJulAugSepOctNovDec", $1) + 2) / 3 )$2;
if (d >= from && d <= to)
print;
}
' file
Используя переключатель:
awk -v from=520 -v to=523 '
function date2time()
{
switch ($1) {
case "Jan": return 1$2; break;
case "Feb": return 2$2; break;
case "Mar": return 3$2; break;
case "Apr": return 4$2; break;
case "May": return 5$2; break;
case "Jun": return 6$2; break;
case "Jul": return 7$2; break;
case "Aug": return 8$2; break;
case "Sep": return 9$2; break;
case "Oct": return 10$2; break;
case "Nov": return 11$2; break;
case "Dec": return 12$2; break;
}
}
{
d = date2time();
if (d >= from && d <= to)
print;
}
' file
Используя массив:
... oh see you have gotten your answer ;)