выбор записи cron с помощью awk или grep - PullRequest
1 голос
/ 20 октября 2011

Я хочу обработать файл cron с указанием времени и записи cron в разные столбцы БД.

cat root | awk '{print $1, $2, $3, $4, $5, $6}'

47 * * * * string=`find somefile`; echo $string > success.txt 2> err.txt

С помощью awk легко получить первые 5 заполнителей cron. Но как выбрать реальную запись cron? В приведенном выше примере я хочу выбрать все от "строка" до "$ строка" Я также хочу выбрать стандартные и ошибочные пути к файлам. то есть success.txt и err.txt

Обновление:

awk '{print $NF}'

Вышеприведенное работает для последней переменной, но следующее не позволяет найти вторую-последнюю.

awk '{print $NF-2}'

1 Ответ

0 голосов
/ 20 октября 2011

Простой способ избавиться от начальных полей - использовать cut:

cut -d' ' --complement -f1-5

Я считаю, что для этого требуется версия cut для GNU, поскольку флаг --complement является расширением.

Я бы использовал awk, чтобы разделить остальное на поля:

awk '{ 
    outfile=$(NF-2)
    errfile=$NF
    for(n=NF; n>(NF-4); n--) { $n = ""}
    printf("command: %s\noutput: %s\nerror: %s\n", $0, outfile, errfile) 
}'

Обратите внимание, что этот подход предполагает несколько предположений:

  • Пробелы могут быть стандартизированы для одиночных пробелов
  • и stdout, и stderr перенаправлены
  • в именах файлов вывода и ошибок нет пробелов
...