Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

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

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

Offline henkoegema

  • Lid
    • PA2HO
  • Steunpunt: Nee
[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://www.henk.oegema.com
Registered linux user 520520.  In gebruik: Ubuntu 18.04.  Radio Amateur callsign: PA2HO Interesses: Raspberry Pi & Arduino

Offline Nunslaughter

  • Lid
    • timovwb
  • Steunpunt: Nee
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()

Offline henkoegema

  • Lid
    • PA2HO
  • Steunpunt: Nee
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://www.henk.oegema.com
Registered linux user 520520.  In gebruik: Ubuntu 18.04.  Radio Amateur callsign: PA2HO Interesses: Raspberry Pi & Arduino

Offline Nunslaughter

  • Lid
    • timovwb
  • Steunpunt: Nee
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.

Offline gavinspearhead

  • Lid
    • URD
  • Steunpunt: Nee
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

Offline henkoegema

  • Lid
    • PA2HO
  • Steunpunt: Nee
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://www.henk.oegema.com
Registered linux user 520520.  In gebruik: Ubuntu 18.04.  Radio Amateur callsign: PA2HO Interesses: Raspberry Pi & Arduino

Offline laudaka

  • Lid
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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