Você pode resolver esse problema usando expressões regulares e convertendo para TSV.
Se os seus dados não estiverem formatados exatamente como o seu exemplo, isso não funcionará.
s/> account # (\d+) +(.+)\n> product 1 name +(.+)\n> product 2 name +(.+)\n> product 3 name +(.+)\n/account # \t\t\t\t\r/
Comentou:
s/ # We are replacing text
> account # (\d+) # We are capturing the account number as
+ # Ignoring all spaces afterwords
(.+)\n # Capture the client name as and look for a new line
> product 1 name +(.+)\n # Capture the product 1 value as
> product 2 name +(.+)\n # Capture the product 1 value as
> product 3 name +(.+)\n # Capture the product 1 value as
/ # Done searching, start replacing
account # \t # Write out the account number then a tab
\t\t\t # Write out the client name and product values seperated by tabs
\r/ # Write a new line for the next bit of data and terminate
Que transformará seus dados em:
account # 1 client name product 1 value product 2 value product 3 value
account # 2 client name product 1 value product 2 value product 3 value
Separado por guias que podem ser facilmente importadas para o Excel.
Editar: parece que você pode usar um aplicativo como Zeus Edit para encontrar e substituir essa expressão regular.