删除某些行中的换行符

时间:2014-08-03 14:24:07

标签: bash awk sed formatting sh

我有一个看起来像的文件:

http://pastebin.com/a5Trnmyc

我怎样才能删除“colaboracion \ d +”和“organismo:”之间的换行符?它应该是这样的:

colaboracion1: - 3 a�os (2003-2006) adjunto al coordinador del �rea de Inform�tica de la Agencia Nacional de Evaluaci�n y Prospectiva (ANEP).- Experto evaluador y revisor de proyectos para la Comisi�n Europea desde 2001.- Experto evaluador de agencias de evaluaci�n de Argentina, Chile, Israel, Francia y de varios organismos auton�micos (Galicia, Castilla y Le�n, Andaluc�a, Murcia).- A nivel nacional es evaluador habitual de ANECA y ANEP (proyectos del Plan Nacional I+D+i, Torres Quevedo, Estudios y An�lisis, etc.).

如您所见,新行已被删除。

我正在尝试使用sed或awk。有没有办法做到这一点?

这不是一个重复的问题,因为这个问题包括行中的特殊字符。例如,它包含可能一直改变以解析它的破折号。

谢谢!

2 个答案:

答案 0 :(得分:1)

awk '{ sub(/[ \t\r]+$/, ""); sub(/^[ \t]+/, "") } !NF { next } /^[^[:space:]]+:/ { if (length(t)) print t; t = $0; next } { t = t $0 } END { if (length(t)) print t }' file

输出:http://pastebin.com/mdx5uw98

答案 1 :(得分:0)

konsolebox 的答案中窃取正则表达式位,这也应该有效:

awk '{if($0 !~ /^[^[:space:]]+:/ && NF) printf $0 " "; else print}' file