Awk/grep/sed получают список разделенных запятой значений чисел от строк текста

Это - вероятно, ошибочный драйвер, теперь проблема состоит в том, чтобы узнать который. Первая вещь заняться расследованиями состоит в том, чтобы посмотреть на журналы: /var/log/kern.log и /var/log/Xorg.0.log. Обратите внимание, что тот последний файл повторно смотрится каждый раз, когда Вы загружаетесь; если Вы перезагрузили в X, так как отказ, предыдущий журнал будет в /var/log/Xorg.0.log.old.

ОС может, дал разрушенный, прежде чем она могла записать журналы, но на консоли существует, вероятно, сообщение. Чтобы заставить это сообщение появиться, необходимо деактивировать экран-заставку времени начальной загрузки. С Личинкой 2, редактирование /etc/default/grub и измените строку GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" только к GRUB_CMDLINE_LINUX_DEFAULT="". Хотелось бы надеяться, в следующий раз, когда ошибка препятствует тому, чтобы Ваша система обычно загружалась, последние несколько строк на экране скажут Вам что случилось.

1
31.01.2014, 02:37
3 ответа

regex, который это усложнило, лучше обрабатывается с Perl, например.

grep "Photo for" logFile | perl -pe 's/.*Photo for ((\d+).*/\1/' | tr '\n' ','

Если Perl вне рассмотрения:

grep "Photo for" logFile | awk '{sub(/.*Photo for \(/,"",$0);sub(/[ ].*/,"");print $0}' | tr '\n' ','
1
27.01.2020, 23:28
  • 1
    Сначала каждый работает..., второй дает awk: fatal: Unmatched ( or \(: /.*Photo for (/. Спасибо, хотя, проблема решена.Править: Второй просто нуждается в той круглой скобке, которой оставляют с \. –  Muhd 31.01.2014, 02:42
  • 2
    я исправил второй ответ (я добавил "фотографию для" к regex в последнюю минуту, когда Вы отредактировали сообщение) –  samiam 31.01.2014, 02:59

Альтернатива, которая использует только Perl и соответствует критериям, которые Вы указали:

perl -ne '
    /Photo for/ && /([0-9]{9,})/ && push @numbers,$1;
    END{ $" = ","; print "@numbers" }
' logFile

Это распечатает разделенный запятыми список первого вхождения непрерывной строки цифр, составленной из 9 или больше цифр на каждом соответствии строки Photo for.

2
27.01.2020, 23:28

1) нужна гну grep

grep -iPo "(?<=Photo for \()[0-9]+" logFile|tr "\n" ","

2) Используя awk

awk -F \( '/Photo for/{split($2,a,OFS);printf a[1] ","}' logFile
0
27.01.2020, 23:28

Теги

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