Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [OPGELOST]Duplikaten verwijderen.  (gelezen 2018 keer)

[OPGELOST]Duplikaten verwijderen.
« Gepost op: 2011/06/03, 13:53:44 »
Ik heb een tekst file (test1.txt) met (als voorbeeld) de volgende lijnen
a
a
a
a
b
c
c
d
d
d

Hoe kan ik deze tekst file veranderen in test2.txt met de lijnen
a
b
c
d

Ik heb al geprobeerd "sort text1.txt | uniq -u > tekst2.txt" maar dat is niet juist.
Ik wil dus alle duplikaten verwijderen, maar er één van overhouden.

Mvgr.
« Laatst bewerkt op: 2011/06/03, 16:09:44 door henkoegema »
Miscere utile dulci. (Ter leering ende vermaeck)
http://henk.oegema.com  (On RaspberryPi2)
Registered linux user 520520.  In gebruik: Ubuntu  22.04.3 Hobby's: Radio Amateur callsign: PA2HO.  Interesses: Raspberry Pi & Arduino & Jetson Nano (voor AI & ML)

Re: Duplikaten verwijderen.
« Reactie #1 Gepost op: 2011/06/03, 14:04:53 »
#!/usr/bin/env python

FILE_IN = 'test1.txt'
FILE_OUT = 'test2.txt'

def main():
    uniques = []
    for line in open(FILE_IN):
        if line not in uniques:
            uniques.append(line)
    fileout = open(FILE_OUT, 'w')
    fileout.write(''.join(uniques))
    fileout.close()

if __name__ == '__main__':
    main()

Re: Duplikaten verwijderen.
« Reactie #2 Gepost op: 2011/06/03, 14:11:37 »
#!/usr/bin/env python

FILE_IN = 'test1.txt'
FILE_OUT = 'test2.txt'

def main():
    uniques = []
    for line in open(FILE_IN):
        if line not in uniques:
            uniques.append(line)
    fileout = open(FILE_OUT, 'w')
    fileout.write(''.join(uniques))
    fileout.close()

if __name__ == '__main__':
    main()

Bedankt voor je antwoord. :)
Het werkt uitstekend.
Dit scheelt me weer een dag werk.

(p.s.  Is het niet mogelijk om het met alleen maar Linux commando's te doen?)
« Laatst bewerkt op: 2011/06/03, 14:26:50 door henkoegema »
Miscere utile dulci. (Ter leering ende vermaeck)
http://henk.oegema.com  (On RaspberryPi2)
Registered linux user 520520.  In gebruik: Ubuntu  22.04.3 Hobby's: Radio Amateur callsign: PA2HO.  Interesses: Raspberry Pi & Arduino & Jetson Nano (voor AI & ML)

Re: Duplikaten verwijderen.
« Reactie #3 Gepost op: 2011/06/03, 14:27:06 »
Dan zal iemand anders moeten helpen, ben daar niet zo erg in thuis.

Re: Duplikaten verwijderen.
« Reactie #4 Gepost op: 2011/06/03, 15:54:02 »
Volgens mij moet je die -u weglaten
"sort text1.txt | uniq > tekst2.txt"
URD - http://www.urdland.com - Usenet Resource Downloader

Re: Duplikaten verwijderen.
« Reactie #5 Gepost op: 2011/06/03, 16:07:43 »
Volgens mij moet je die -u weglaten
"sort text1.txt | uniq > tekst2.txt"

Ik heb het getest en je hebt inderdaad gelijk.   ;)
Miscere utile dulci. (Ter leering ende vermaeck)
http://henk.oegema.com  (On RaspberryPi2)
Registered linux user 520520.  In gebruik: Ubuntu  22.04.3 Hobby's: Radio Amateur callsign: PA2HO.  Interesses: Raspberry Pi & Arduino & Jetson Nano (voor AI & ML)

Offline laudaka

  • Lid
Re: [OPGELOST]Duplikaten verwijderen.
« Reactie #6 Gepost op: 2011/06/18, 00:31:38 »
Als je jezelf typwerk wil besparen kan het zelfs met één Linux commando =D:
sort -u tekst1.txt > tekst2.txtMisschien kwam die -u die je bij uniq had daarvandaan, maar bij uniq betekent -u weer heel wat anders. sort -u betekent dus sorteer het bestand en met de -u haalt sort als extraatje ook nog de dubbele weg.

Maar als je gewoon iets wil hebben wat makkelijk te onthouden is dan is wat gavinspearhead schreef natuurlijk het slimst:
sort tekst1.txt | uniq > tekst2.txt
Zelf vind ik dit het lekkerste lezen (het cat commando is hier overbodig, maar ik vind het fijner lezen zo):
cat tekst1.txt | sort | uniq > tekst2.txt
Dat waren alle varianten met Linux-commando's  :)

Veel plezier met vrije en open source software,
Paulus/laudaka

P.S. Als mensen je vaak hebben aangeraden om man pages te lezen maar je die altijd te moeilijk vond. De man page van uniq is één van de makkelijkere man pages, zeker als je een goed Engels hebt. De meeste man pages zijn tegenwoordig afgrijselijk moeilijk om te lezen. Voor iedereen die niet zeker weet wat ik met man pages bedoel: wat je krijgt als je bijvoorbeeld man uniq typt, en waar je dan weer uitkomt door q te typen.
« Laatst bewerkt op: 2011/06/18, 00:37:38 door laudaka »

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: [OPGELOST]Duplikaten verwijderen.
« Reactie #7 Gepost op: 2011/06/18, 06:31:43 »
Die man pages zijn ook online te vinden: http://manpages.ubuntu.com/
Dat leest soms net wat makkelijker :)

Offline laudaka

  • Lid
Re: [OPGELOST]Duplikaten verwijderen.
« Reactie #8 Gepost op: 2011/06/18, 22:42:02 »
En nog meer voor de fans man pages...
Die man pages zijn ook online te vinden: http://manpages.ubuntu.com/
Dat leest soms net wat makkelijker :)
Dank je Johan, die kende ik nog niet. Het is in het begin wel even wennen, maar wel handig dat je ook man pages van alle versies van Ubuntu kan lezen. :)

Wat nog een andere mogelijkheid is het pakket "man2html" installeren. Voordeel daarvan is dat de presentatie kaler is, vooral als je een klein scherm hebt erg handig. Je gebruikt ook daar Firefox of een andere webbrowser om man pages te lezen maar je hebt geen internetverbinding nodig om de man pages te kunnen lezen. Er staat dan ook alleen in wat je op eigen computer hebt geïnstalleerd. Verder lijkt de opmaak veel op de manpages pagina die jij aanraadt, Johan. Ook met inhoudsopgave.

En dat is echt genoeg over man pages denk ik. Ik moet me inhouden :P

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: [OPGELOST]Duplikaten verwijderen.
« Reactie #9 Gepost op: 2011/06/19, 03:22:48 »
Nog ééntje dan, om het af te leren.
De URL shortener voor manpages: http://manpg.es/
Bijv. manpg.es/uniq