Sto cercando linee di contatto in trasferta basate sulla linea successiva. Finora l'unico modo che vedo è creare uno script di shell che leggerà riga per riga e farà qualcosa in questo modo:
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
Quindi sto cercando di capire se potrebbe essere ottenuto con sed o anche grep con reindirizzamento.
le regole del file sono semplici.
C'è al massimo una e solo una riga che inizia con "", che deve da aggiungere alla riga precedente.
es:
line0
line1
line2,line3
line4
line5,line6
line7,line8
line9
line10
line11
Il file dei risultati sarebbe
line0
line1
line2,line3
line4
line5,line6
line7,line8
line9
line10
line11
Risposta accettata:
Lo farei:
awk -v ORS= '
NR>1 && !/,/ {print "n"}
{print}
END {if (NR) print "n"}' < file
Cioè, stampa solo quel carattere di nuova riga che delimita la riga precedente se quella corrente non inizia con un ,
.
In ogni caso, non userei un while read
ciclo.