Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 删除某些行中的换行符_Bash_Awk_Sed_Formatting_Sh - Fatal编程技术网

Bash 删除某些行中的换行符

Bash 删除某些行中的换行符,bash,awk,sed,formatting,sh,Bash,Awk,Sed,Formatting,Sh,我有一个文件,看起来像: 如何删除“colaboracion\d+”和“organimo:”之间的换行符?应该是这样的: 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

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

如何删除“colaboracion\d+”和“organimo:”之间的换行符?应该是这样的:

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。有什么办法吗


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

谢谢

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

输出:

从konsolebox的答案中窃取正则表达式位,这也应该起作用:

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

这不是一个重复的问题,因为这一行中包含特殊字符。例如,它包含破折号,破折号在解析过程中可能会一直变化。您在另一个线程上尝试过解决方案吗?是的,但遗憾的是,这些特殊字符真的很烦人。这就是为什么我添加了真正的输入,我认为它会比另一个更简单。新输入文件中的破折号或任何其他字符都没有什么特别之处,到目前为止,您已经问了完全相同的问题,并且可以用与上一个问题完全相同的答案来解决()@EdMorton如果你觉得更好的话,我可以在之前的帖子中做一个重大更新。我认为它们是不同的情况(事实上,我认为这将是一个更长、更困难的答案)。