インデントされた行を前の行の末尾に移動するにはどうすればいいですか?

インデントされた行を前の行の末尾に移動するにはどうすればいいですか?

入力:

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

出力:

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

インデントされた行を前の行の末尾に移動するにはどうすればよいでしょうか?

  • インデントされた行内のスペースの数は一定です。
  • 数十個のキーがあり、それぞれの値が次の行にインデントされている可能性があります。
  • キーの値は複数行に渡って配置される場合があります

答え1

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

関連情報