Wie kann ich eingerückte Zeilen an das Ende der vorherigen Zeile verschieben?

Wie kann ich eingerückte Zeilen an das Ende der vorherigen Zeile verschieben?

Eingang:

Key1: value1 value2 value3
Key2: value1 value2 value3
      value4 value5
Key3: value1 value2 value3
      value4 value5 value6
      value7 value8
Key4: 
Key5: value1 

Ausgabe:

Key1: value1 value2 value3
Key2: value1 value2 value3 value4 value5
Key3: value1 value2 value3 value4 value5 value6 value7 value8
Key4: 
Key5: value1 

Wie kann ich eingerückte Zeilen an das Ende der vorherigen Zeile verschieben?

  • Die Anzahl der Leerzeichen ist in den eingerückten Zeilen konstant.
  • Es gibt Dutzende von Schlüsseln, und jeder davon könnte einen Wert haben, der in der nächsten Zeile eingerückt ist.
  • Werte für einen Schlüssel können in mehreren Zeilen stehen

Antwort1

awk 'NR == 1 {printf("%s", $0); next}
     /^ /    {
                for(i=1; i<=NF; i++){
                  printf(" %s", $i)
                }
                next
             }
             {printf("\n%s", $0)}' input > output

verwandte Informationen