Hallo alle zusammen!
Bei folgender Aufgabe komme ich nicht weiter.
Hier ist der zu verarbeitende Inhalt einer Datei (die Zeilennummern gehören nicht zum Inhalt, nur für die nachfolgende Erläuterung der Aufgabenstellung) :
01. AAA;AAB;10
02. AAB;AAA;12
03. AAA;FAC;26
04. AAA;FAV;15
05. DAD;HHZ;89
06. AAA;HOI;33
07. AAA;MKP;59
08. AAA;PPT;45
09. AAA;RRR;88
10. AAA;TTQ;87
11. HHZ;DAD;89
12. MKP;AAA;59
Diese Datei muss eingelesen werden, ausgegeben müssen alle vorhandenen Zeilen und die Zeilen, wo $1 der Zeile n nicht gleich $2 der Zeile m ist und $2 der Zeile n nicht gleich $1 der Zeile m ist, und in dieser Reihenfolge: $2;$1;$3.
Also, Zeile 1 und Zeile 2 müssen nicht angefasst werden, weil da findet man in beiden Zeilen Werte AAA und AAB, nur verdreht. Genauso Zeile 5 und Zeile 11, und Zeile 7 und Zeile 12.
Alle anderen Zeilen haben sozusagen, keine gespiegelten "Doppelgänger" und für Sie muss so ein "Doppelgänger" generiert und der Datei hinzugefügt werden (an welcher Stelle, spielt keine Rolle).
Das ist der gewünschte Output:
01. AAA;AAB;10
02. AAB;AAA;12
03. AAA;FAC;26
04. AAA;FAV;15
05. DAD;HHZ;89
06. AAA;HOI;33
07. AAA;MKP;59
08. AAA;PPT;45
09. AAA;RRR;88
10. AAA;TTQ;87
11. HHZ;DAD;89
12. MKP;AAA;59
13. FAC;AAA;26
14. FAV;AAA;15
15. HOI;AAA;33
16. PPT;AAA;45
17. RRR;AAA;88
18. TTQ;AAA;87
Könnte mir bitte jemand helfen? Alle meine Versuche bleiben bisher erfolglos. Muss auch nicht unbedingt mit AWK erledigt werden. Danke!
Mit AWK verschiedene Felder verschiedener Zeilen vergleichen
-
- Beiträge: 2
- Registriert: 24.12.2017 23:18:56
- heisenberg
- Beiträge: 4124
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Mit AWK verschiedene Felder verschiedener Zeilen vergleichen
Ist das eine Hausaufgabe? Wie sieht denn Dein gedachter Lösungsansatz bisher aus?
Crosspost:
http://www.linuxforen.de/forums/showthr ... ost1849658
https://www.unixboard.de/threads/mit-aw ... hen.59060/
https://www.computerbase.de/forum/showt ... ?t=1735610
https://forum.ubuntuusers.de/topic/mit- ... ener-zeil/
Crosspost:
http://www.linuxforen.de/forums/showthr ... ost1849658
https://www.unixboard.de/threads/mit-aw ... hen.59060/
https://www.computerbase.de/forum/showt ... ?t=1735610
https://forum.ubuntuusers.de/topic/mit- ... ener-zeil/
Re: Mit AWK verschiedene Felder verschiedener Zeilen vergleichen
Code: Alles auswählen
#!/bin/sh
fle="test.txt"
tfle=$(tempfile)
#echo >> $tfle
cat "$fle" | tr ";" " " | while read aa bb cc; do
grep -q -m 1 "${bb};${aa}" "$fle" || echo "${bb};${aa};${cc}" >> $tfle
done
cat "$fle" $tfle
rm $tfle
'grep' macht einen Test auf den verdrehten String einer line,
und der wird im Fehlerfall dem Tempfile hinzugefügt.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-
- Beiträge: 2
- Registriert: 24.12.2017 23:18:56
Re: Mit AWK verschiedene Felder verschiedener Zeilen vergleichen
Hallo rendegast, stimmt, das kann ich in einen Skript packen. Vielen Dank für Deine Antwort!