text file --> csv

Fórumok

Hahó!

Adott a következő szerketetű file (sok ezer sorral)

Zsuzsi Üdülőház
line_2:6145 Kiskunmajsa Petofi utca 45.
line_3:20/1111-326
line_4:Helyben
line_5:Szálláshely,Vendéglátás,Szabadidő
--
Bela kereskedohaz
line_2:6166 Kiskunmajsa Csillagos utca 48.
line_3:30-3487-526
line_4:Helyben
line_5:Szálláshely,*,*
--

A fennt látható szerkezet ismétlődik. Ebből szeretnék egy cvs file-t.
A csillagok hiányzó adatok helyén vannak.

Kb ilyenre szeretném.

Zsuzsi Üdülőház,6145 Kiskunmajsa Petofi utca 45.,20/1111-326,Helyben,Szálláshely, Vendéglátás, Szabadidő
Bela kereskedohaz,6166 Kiskunmajsa Csillagos utca 48.,Helyben,Szálláshely,*,*

Az egésznek az volna az értelme hogy libreoffic-ba (calc) táblázatként importálni tudjam.

köszönöm.

Hozzászólások

Ránézésre például sed-del cserélj minden ^line_[[:digit:]]+: regexpre illeszkedést üresre, utána neline-okat vesszőre kell cserélni, aztán a -- sorokat newline-okra. Így kb.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ezt gányoltam össze, bár lehet, hogy több sebből vérzik:

sed -r 's/^line_[[:digit:]]+://' t.txt | tr '\n' ',' | sed -r 's/--,/\n/g'

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Gányolt, de legalább gyorsan kész van:

#!/bin/bash

cat a |while read i
do
 if [ "${i}" = '--' ]
 then
  echo ${line#,}
  line=''
 else
  line="${line},${i#line_?:}"
 fi
done

:D