Portál AbcLinuxu, 12. května 2025 12:53
Máte pravdu. Můžete prosím poradit ja se toto dá udělat.
Zjdednodušený skript toho co potřebuji:
#!/bin/bash
Tabulka="Tabulka_kontakty_bez_nadpisu.csv";
for i in `awk -F ";" '{print $9}' $Tabulka`; do echo $i; Soubor=$i'.html';
Jmeno=`awk -F ";" '$9 == $i {print $2}' $Tabulka`;
Funkce=`awk -F ";" '$9 == $i {print $4}' $Tabulka`;
echo $Jmeno;
echo $Funkce; done
#!/bin/bash Tabulka="Tabulka_kontakty_bez_nadpisu.csv"; awk -F ";" '{printf("Soubor: %s.html\nJméno: %s\nFunkce: %s\n", $9, $2, $4)}' "$Tabulka"
#!/usr/bin/env bash Tabulka="Tabulka_kontakty_bez_nadpisu.csv"; while read line; do Id=$(cut -d ';' -f 9 <<< "$line") Soubor="${Id}.html" Jmeno=$(cut -d ';' -f 2 <<< "$line") Funkce=$(cut -d ';' -f 4 <<< "$line") echo "$Jmeno" echo "$Funkce" done < "$Tabulka"Není to přesně to co je v tom zjednodušeném scriptu, ale mohlo by to k tomu vést... Když nic jiného, tak to aspoň zavírá do uvozovek věci, které by nejspíš v uvozovkách být měly
cut
je tam zcela zbytečný.
#!/usr/bin/env bash Tabulka="Tabulka_kontakty_bez_nadpisu.csv"; while IFS=";" read n1 Jmeno n3 Funkce n5 n6 n7 n8 Id n1O; do Soubor="${Id}.html" echo "$Jmeno" echo "$Funkce" done < "$Tabulka"Ve srovnání s AWK je to výrazně pomalejší. Pro několik set položek to však může vyhovovat.
#!/usr/bin/env python import csv tabulka = "Tabulka_kontakty_bez_nadpisu.csv" for row in csv.reader(open(tabulka, 'r'), delimiter=";"): soubor = "%s.html" % row[8] jmeno = row[1] funkce = row[3] print (jmeno) print (funkce)je třeba si dát pozor na to, že pole je indexované od nuly a že odsazení řádku má význam - které příkazy budou opakovány ve smyčce for je dáno mezerami na začátku řádky! Dokumentace k použití cvs v pythonu je tady, ale myslím, že to ani není třeba zkoumat.
12;"Přímá řeč: ""No nazdar!""; řekl Karel.";34O konci řádku uvnitř uvozovek ani nemluvě.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.