Estoy buscando líneas de contacto de distancia basadas en la siguiente línea. Hasta ahora, la única forma que veo es crear un script de shell que lea línea por línea y haga algo como lo siguiente:
while read line
if $line does not start with "," and $curr_line is empty
store line in curr_line
if $line does not start with "," and $curr_line is not empty
flush $curr_line to file
store $line in $curr_line
if $line starts with "," append to $curr_file, flush to file empty curr_line
done < file
Así que estoy tratando de entender si se puede lograr con sed o incluso con grep con redirección.
las reglas del archivo son simples.
Hay como máximo una y solo una línea que comienza con "," que necesita para ser añadido a la línea anterior.
ej.:
line0
line1
line2,line3
line4
line5,line6
line7,line8
line9
line10
line11
El archivo de resultado sería
line0
line1
line2,line3
line4
line5,line6
line7,line8
line9
line10
line11
Respuesta aceptada:
Yo haría:
awk -v ORS= '
NR>1 && !/,/ {print "n"}
{print}
END {if (NR) print "n"}' < file
Es decir, solo imprime ese carácter de nueva línea que delimita la línea anterior si la actual no comienza con un ,
.
En cualquier caso, no usaría un while read
bucle.