Pregunta

Input files looks like this:

Header :  

            Data  
  Header2 :

data for header2

Header3 : data 3something

What I did:

sed "s/^ *//;s/ *$//;s/ \{1,\}/ /g" infile | tr -s "\n"  > outfile

Now it's something like this:

Header :  
Data  
Header2 :  
data for header2  
Header3 : data 3something

and what i was looking for is this:

Header :  
Data  
Header2 :  
data for header2  
Header3 :  
data 3something  

So, what am i missing here?

¿Fue útil?

Solución

By slightly modifying your one liner, I think you can make it work:

sed "s/^ *//;s/ *$//;s/ \{1,\}/ /g;s/: */:\n/" infile | tr -s "\n"  > outfile

Otros consejos

This might work for you:

sed '/^$/d;s/^\s*//;/:\s*\(\S\+\)/s//:\n\1/' file
Header :  
Data  
Header2 :
data for header2
Header3 :
data 3something
awk '$1 = $1 { if(NR!=8) print } END { print $1, $2 "\n" $3, $4 }' file 
Header :
Data
Header2 :
data for header2
Header3 :
data 3something
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top