Hallo UNIX-, LINUX-, SHELL-PROFIS,
ich muss aus einer solchen Liste:
#liste.csv
Katze;Mietze;Kater;cat;feline;chat;;gato;;
Hund;WauWau;Canide;dog;bitch;chien;chiene;;
so eine machen
Katze
SYN Mietze #die SYN sollen im deutschen 2 mal ausgegeben werden.
SYN Kater
ENGLISH: cat #alle anderen Begriffe nur 1 mal
SPANISH: gato
FRENCH: chat
cat
SYN feline
GERMAN: Katze
SPANISH: gato
FRENCH: chat
chat
GERMAN: Katze
SPANISH: gato
ENGLISH: cat
gato
GERMAN: Katze
FRENCH: chat
ENGLISH: cat
Meine, schwierig gestellte, Frage:
bis jetzt bekomme ich folgende Lösung bei der ich die doppelten Einträgeweg löschen muss, sprich im ersten Block muss 1 mal „ENGLISH:…“ komplet weg. Im zweiten muss 2 mal „GERMAN:…“ weg usw., usw.
Katze
SYN Mietze
SYN Kater
ENGLISH: cat
ENGLISH: feline
FRENCH: chat
SPANISH: gato
cat
SYN feline
GERMAN: Katze
GERMAN: Mietze
GERMAN: Kater
FRENCH: chat
SPANISH: gato
chat
GERMAN: Katze
GERMAN: Mietze
GERMAN: Kater
SPANISH: gato
ENGLISH: cat
ENGLISH: feline
gato
GERMAN: Katze
GERMAN: Mietze
GERMAN: Kater
FRENCH: chat
ENGLISH: cat
ENGLISH: feline
Hund
SYN WauWau
SYN Canide
ENGLISH: dog
ENGLISH: bitch
FRENCH: chien
FRENCH: chiene
dog
SYN bitch
GERMAN: Hund
GERMAN: WauWau
GERMAN: Canide
FRENCH: chien
FRENCH: chiene
chien
SYN chiene
GERMAN: Hund
GERMAN: WauWau
GERMAN: Canide
ENGLISH: dog
ENGLISH: bitch
GERMAN: Hund
GERMAN: WauWau
GERMAN: Canide
FRENCH: chien
FRENCH: chiene
ENGLISH: dog
ENGLISH: bitch
Dies bekomme ich mit den 2 Skripten hin:
%skript1 liste.csv > erg
#!/bin/awk -f
#skript1
BEGIN{
FS=";";
}
{
printf $1"\n" " SYN „$2“\n" " SYN „$3“\n" " ENGLISH: „$4“\n" " ENGLISH: „$5“\n" " FRENCH: „$6“\n" " FRENCH: „$7“\n" " SPA
NISH: „$8“\n" " SPANISH: „$9“\n\n" ;
printf $4"\n"" SYN „$5“\n"" GERMAN: „$1“\n"" GERMAN: „$2“\n"" GERMAN: „$3“\n"" FRENCH: „$6“\n"" FRENCH: „$7“\n"" SPANISH:
„$8“\n"" SPANISH: „$9“\n\n" ;
printf $6"\n"" SYN „$7“\n"" GERMAN: „$1“\n"" GERMAN: „$2“\n"" GERMAN: „$3“\n"" SPANISH: „$8“\n"" SPANISH: „$9“\n"" ENGLIS
H: „$4“\n"" ENGLISH: „$5“\n\n" ;
printf $8"\n"" SYN „$9“\n"" GERMAN: „$1“\n"" GERMAN: „$2“\n"" GERMAN: „$3“\n"" FRENCH: „$6“\n"" FRENCH: „$7“\n"" ENGLISH:
„$4“\n"" ENGLISH: „$5“\n\n" ;
}
%skript2 erg
#!/bin/csh
#skript2
set FILE = „./ausgabe“
sed ‚/: $/d‘ $1 | sed ‚/SYN $/d‘ > $FILE
GRUß
Navigato
(