Добавить дату из первой строки текстового файла в начало каждой строки - PullRequest
3 голосов
/ 07 апреля 2019

Я пытаюсь добавить первую строку текста (Дата) в начало каждой строки в остальной части текстового файла.Кто-нибудь может помочь?Я использую bash для извлечения данных в отображаемый текстовый файл.(совершенно новый для этого)

Текстовый файл, как описано выше

Текущий текстовый файл:

Sun Apr 7 14:16:30 
Host: 192.168.1.3; Status: Up
Host: 192.168.1.5; Status: Up
Host: 192.168.1.6; Status: Up

Я хочу, чтобы текстовый файл читал:

Date (from first line); Host: 192.168.1.3; Status: Up
Date (from first line); Host: 192.168.1.5; Status: Up
Date (from first line); Host: 192.168.1.6; Status: Up

Ответы [ 4 ]

4 голосов
/ 07 апреля 2019
awk -v OFS='; ' 'NR==1{d=$0;next}{print d,$0}' file
2 голосов
/ 07 апреля 2019

Ниже awk поможет:

awk 'NR==1{Date="Date" FS $0 ";" FS}NR!=1{print Date $0}' file

Пример вывода

Date Sun Apr 7 14:16:30; Host: 192.168.1.3; Status: Up
Date Sun Apr 7 14:16:30; Host: 192.168.1.5; Status: Up
Date Sun Apr 7 14:16:30; Host: 192.168.1.6; Status: Up
1 голос
/ 08 апреля 2019

Это может сработать для вас (GNU sed):

sed '1h;1d;G;s/\(.*\)\n\(.*\)/Date \2; \1/' file

Сделать копию первой строки.

Удалить первую строку.

Добавить первуюстрока к текущей строке.

Переставьте первую строку, чтобы быть перед текущей строкой и предшествовать литералу Date, за которым следует ;

0 голосов
/ 25 апреля 2019

примерил gnu awk, относительно 1-й строки #

 awk 'NR==1{a=$0;next}{print "Date "a,$0}' d

относительно шаблона

awk '$0~/\s*(Sun|Mon|Tue|Wed|Thu|Fri|Sat)/{a=$0;next}{print "Date "a,$0}' d
...