У меня есть файл со следующим повторяющимся узором:
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
текущей строке.