Отметка времени каждой строки файла с датой, взятой из самого файла

Отметка времени каждой строки файла с датой, взятой из самого файла

У меня есть файл со следующим повторяющимся узором:

date
line 1
line 2
...
line x

Пример:

10/30/2016 12:10:00
xxx 123
yyy 456
zzz 789

10/30/2016 12:20:00
xxx 234
yyy 567
zzz 890

Как мне поставить отметку времени для каждой строки с соответствующей датой, например:

10/30/2016 12:10:00
10/30/2016 12:10:00 xxx 123
10/30/2016 12:10:00 yyy 456
10/30/2016 12:10:00 zzz 789
10/30/2016 12:20:00
10/30/2016 12:20:00 xxx 234
10/30/2016 12:20:00 yyy 567
10/30/2016 12:20:00 zzz 890

Я думаю, что это возможно с AWK, но у меня не так много опыта в этом. Спасибо заранее!

решение1

Один из вариантов — сделать это следующим образом:

awk '/^[[:digit:]/]+[[:space:]]+[[:digit:]:]+/ {d=$1 " " $2; print; next; } /[^[:space:]]/ { print d " " $0 }'

которая будет соответствовать любой последовательности цифр, /за которой следуют пробелы, затем серия цифр и :s, которая должна соответствовать нашей дате. Если мы находим одну, мы сохраняем первые два поля в переменной, dзатем печатаем эту строку и двигаемся дальше. Затем, всякий раз, когда мы находим строку, которая имеет хотя бы один непробельный символ (поскольку вы, похоже, удаляете пустые строки в своем примере), мы печатаем текущее значение в dтекущей строке.

Связанный контент