Подготовить строки с префиксом файла с помощью sed или awk

Как изменить образец входного файла, чтобы получить что-то вроде выходного файла ниже?

Входной файл:

 / TMP / журналы
 10/13/15 00:19:13 templogs1
 10/13/15 00:19:13 dummylogs
 10/13/15 01:19:12 test
 Ошибка 10/13/15 01:19:12
 / TMP / ошибка
 10/13/15 00:16:10 x
 10/13/15 00:16:10 y
 10/13/15 01:16:10 z
 10/13/15 01:16:10 a
 / TMP / доступ
 10/13/15 00:56:14 b
 10/13/15 00:56:14 c

Выходной файл:

 / tmp / logs 10/13/15 00:19:13 templogs1
 / tmp / logs 10/13/15 00:19:13 dummylogs
 / tmp / logs 10/13/15 01:19:12 test
 / tmp / logs 10/13/15 01:19:12 ошибка
 / tmp / error 10/13/15 00:16:10 x
 / tmp / error 10/13/15 00:16:10 y
 / tmp / error 10/13/15 01:16:10 z
 / tmp / error 10/13/15 01:16:10 a
 / tmp / access 10/13/15 00:56:14 b
 / tmp / access 10/13/15 00:56:14 c

  • Извлечение жетонов из строки текста
  • Как заменить \ 1 \ на новую строку
  • Нежелательное совпадение с регулярным выражением SED (эмулировать perl's. *?)
  • Выберите конкретный диапазон полей текстового файла
  • простой стол поворота скрипта
  • Как сопоставить шаблон, удалить шаблон, а также следующую и предыдущую строку в Solaris 10
  • замена шаблона с помощью sed
  • Выделите сегодня в Mac
  • 2 Solutions collect form web for “Подготовить строки с префиксом файла с помощью sed или awk”

    Попробуйте с sed

     sed ' /^\//{ # execite block if line start with «/» h # put line into hold-space d # clean, return to beginning } # end block G # append hold-space to line s/\(.*\)\n\(.*\)/\2 \1/ # exchange first and last part of line ' input.file > output.file 

    и другой вариант

     sed ' /^\//{ # execute from line started with «/» :1 # mark return point N # get next line /\n\//D # if such next line started «/» remove previous #+and starts from the beginning with last line s/\n/ /p # change newline with space and prints both lines s/ .*// # removes last line $!b1 # return to marked point with fist line if not end d # clean all (finish) } ' input.file > output.file 

    пытаться

     awk 'substr($1,1,1) == "/" { prefix=$0 ; next ; } { printf "%s %s\n",prefix,$0;}' 

    это будет захватывать префикс, когда они начинаются с ' / ' …

    Interesting Posts

    Если у меня SSD и жесткий диск в системе, SSD может действовать как кэш для жесткого диска?

    Отредактировано /etc/cron.d/anacron, изменения сразу же действуют?

    file (1) 5.28 Недопустимый аргумент при использовании параметра байтов

    Самый быстрый способ создать файл с уникальными наносекундными метками 1MM

    Как отключить диапазон массива в Bash

    завиток и wget отрезать URL-адрес

    Отсортируйте только один столбец, оставив оставшиеся столбцы нетронутыми

    Является ли GRUB лучшим решением для загрузки? Есть ли более простая альтернатива?

    Что делает «set -f» в Korn Shell?

    Используйте файл списка для редактирования главного файла через awk

    Откройте файл .raw как текст меньше

    После перезагрузки подключитесь к удаленному рабочему столу

    Ошибка: не удается открыть экран

    Egrep несколько строк в файле XML

    Найти сервер с небольшой задержкой ping (мой скрипт, но может ли кто-нибудь написать его, например, Perl?)

    Linux и Unix - лучшая ОС в мире.