Как объединить две строки в одной строке из текстового файла в сценарии оболочки Linux - PullRequest
0 голосов
/ 28 августа 2018

Из Nagios я загрузил его html-файл с помощью команды wget, а затем преобразовал этот html-файл в Textfile, используя следующий код:

html2text -width 180 file.html >a.txt

затем я обрезал первые 10 строк, потому что я не хочу этот текст, и я получил текстовый файл ниже

awk 'NR > 10 { print }'a.txt > b.txt

Мне нужно объединить две строки в одну строку не для всех строк, а только для конкретного вывода из файла b.txt. Примечание: текстовый файл содержит N строк

Здесь вывод файла b.txt:

                      DISK OK - free space:          CRITICAL
01-08-2018 07:05:05   Service Required     Critical  CPU:loadaverage 6.0%                    

01-08-2018 07:10:25   Service Alert        Critical  memoryUsage

                       DISK OK - free space: 
02-08-2018 01:05:2018  Service Alert       Warning   memoryUsage

                                                      CRITICAl:outstanding alert attention 
02-08-2018 02:05:2018  Service Alert        Critical  required 

Ожидаемый результат:

01-08-2018 07:05:05   DISK OK - free space:Service Required  Critical    CRITICALservice requiredCPU:loadaverage 6.0%

01-08-2018 07:10:25   Service Alert                          Critical    memoryUsage

02-08-201801:05:2018  DISK OK - free space:Service Alert     Warning     memoryUsage

02-08-2018 02:05:2018 Service Alert                         Critical     CRITICAL:outstanding alert attention required

Заранее спасибо

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете использовать awk для объединения строк:

awk '
  /^ +/{                     # For lines starting with spaces,
    gsub(/^ +/," ");         # Replace these multiple spaces with only one
    a=a $0;                  # Store the line into the variable a
    next                     # Continue with the next line
  }
  {                          # For lines not starting with spaces
    $3=$3 a;                 # Append the variable a to the third element
    a=""                     # Clear variable a
  }
  1                          # Print the current line
' b.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...