Portál AbcLinuxu, 5. května 2025 09:12
Dobrý deň prajem.
Mám jeden veľký CSV súbor (cca 1.000.000 záznamov) ktorý vyzerá takto:
"poradove_cislo","Priezvisko Meno","Titul","PSČ","Mesto","Ulica","číslo_domu","Telefón"
a ja ho potrebujem mať takto:
"Titul","Meno","Priezvisko","Telefón","Ulica číslo_domu","Mesto","PSČ"
Ide hlavne o to, že hlavne potrebujem "rozdeliť" sĺpec ("Priezvisko Meno") na ("Meno","Priezvisko") a "spojiť" sĺpce ("Ulica","číslo_domu") na ("Ulica číslo_domu").
Absolútne ale nemám potuchy, že kde začať a aké CLI nástroje na to použíť. Preto od vás drzo prosím ilustračný príklad.
Vopred veľmi pekne ďakujem.
Řešení dotazu:
cp muj.csv out.csv vim out.csva ve víčku zadat (zapsat znak ':' a pak zkopírovat zbytek):
:%s/^"\([^",]*\)","\([^",]*\)\ \([^",]*\)","\([^",]*\)","\([^",]*\)","\([^",]*\)","\([^",]*\)","\([^",]*\)","\([^",]*\)"$/"\4","\3","\2","\9","\7 \8","\6","\5"/gasi chvilku počkat
:wqSamozřejně RegExpr se dá použít kdekoliv a jakkoliv je upravit.:)
:%s/^"\(.*\)","\(.*\)\ \(.*\)","\(.*\)","\(.*\)","\(.*\)","\(.*\)","\(.*\)","\(.*\)"$/"\4","\3","\2","\9","\7 \8","\6","\5"/gBude rozhodně lepší :)
$ cat foo "poradove_cislo","Priezvisko Meno","Titul","PSC","Mesto","Ulica","cislo_domu","Telefon" $ sed 's/^"\(.*\)","\(.*\)\ \(.*\)","\(.*\)","\(.*\)","\(.*\)","\(.*\)","\(.*\)","\(.*\)"$/"\4","\3","\2","\9","\7 \8","\6","\5"/g' foo "Titul","Meno","Priezvisko","Telefon","Ulica cislo_domu","Mesto","PSC"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.