Reformat spaces around a particular character using tr / sed / awk
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?
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