Likes Likes:  0
Resultaten 1 tot 12 van de 12
Geen
  1. #1
    Lijnen verwijderen die een bepaalde text bevatten
    geregistreerd gebruiker
    164 Berichten
    Ingeschreven
    28/04/08

    Locatie
    Wetteren

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Thread Starter

    Lijnen verwijderen die een bepaalde text bevatten

    Hoi,

    We hebben een heel groot aantal bestanden waarin we lijnen willen verwijderen die een bepaalde tekst bevatten.

    Stel nu voor dat we 1000en bestanden hebben, en in die bestanden zitten enkele lijnen waarin bijvoorbeeld de tekst "foobar" voorkomt. Hoe kunnen we die lijnen dan verwijderen uit deze bestanden?

    Ik heb al zitten testen met sed/awk/perl maar vind precies niet de parameters die ik nodig heb voor deze commands. Er loopt altijd wel iets fout

    Alvast bedankt!

  2. #2
    Lijnen verwijderen die een bepaalde text bevatten
    Allrounder
    1.420 Berichten
    Ingeschreven
    18/04/06

    Locatie
    Groningen

    Post Thanks / Like
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    27 Berichten zijn liked


    Naam: Maarten
    Bedrijf: Keizer IT
    URL: keizer.it
    Registrar SIDN: ja
    KvK nummer: 56981139

    grappig, ik ben opzoek naar bijna hetzelfde, maar dan vervangen ipv verwijderen

    zullen we dat maar in hetzelfde topic doen dan?

  3. #3
    Lijnen verwijderen die een bepaalde text bevatten
    Programmeur / Hoster
    3.952 Berichten
    Ingeschreven
    20/06/06

    Locatie
    Wijlre

    Post Thanks / Like
    Mentioned
    28 Post(s)
    Tagged
    0 Thread(s)
    647 Berichten zijn liked


    Naam: John Timmer
    Bedrijf: SystemDeveloper.NL
    Functie: Eigenaar
    URL: www.systemdeveloper.nl
    KvK nummer: 14083066
    View johntimmer's profile on LinkedIn

    perl -pi.bak -e 's/oudetekst/nieuwetekst/g' bestanden.ext

    Dit maakt een copie van de bestanden met een .bak extentie en wijzigt die tekst in het originele bestand.
    SystemDeveloper.NL - 64BitsWebhosting.EU : Softwareontwikkeling & Hosting freaks

  4. #4
    Lijnen verwijderen die een bepaalde text bevatten
    geregistreerd gebruiker
    164 Berichten
    Ingeschreven
    28/04/08

    Locatie
    Wetteren

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Thread Starter
    Citaat Oorspronkelijk geplaatst door systemdeveloper Bekijk Berichten
    perl -pi.bak -e 's/oudetekst/nieuwetekst/g' bestanden.ext

    Dit maakt een copie van de bestanden met een .bak extentie en wijzigt die tekst in het originele bestand.
    Hiermee kan ik jammer genoeg niet echt iets doen, in mijn geval moet hij de volledige lijnen echt verwijderen. Het moet ook in het bestand zelf worden aangepast, niet via een bak file dus. Ik vermoed dat dit enkel de '.bak' uit het commando weghalen is?

    Iemand die iets weet om die volledige lijnen te verwijderen?

  5. #5
    Lijnen verwijderen die een bepaalde text bevatten
    geregistreerd gebruiker
    278 Berichten
    Ingeschreven
    24/03/06

    Locatie
    Westland

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: ja
    KvK nummer: 27278354
    Ondernemingsnummer: nvt

    mv file.txt tmpfile.txt
    grep -v "foobar" tmpfile.txt > file.txt
    rm file.txt

    Je werkt dus wel met een tijdelijke file, maar daar kom je volgens mij niet onderuit. Als je namelijk gelijk terug schrijft naar het bronbestand, hou je alleen de eerste regel over

  6. #6
    Lijnen verwijderen die een bepaalde text bevatten
    geregistreerd gebruiker
    164 Berichten
    Ingeschreven
    28/04/08

    Locatie
    Wetteren

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Thread Starter
    Citaat Oorspronkelijk geplaatst door Jurian Bekijk Berichten
    mv file.txt tmpfile.txt
    grep -v "foobar" tmpfile.txt > file.txt
    rm file.txt

    Je werkt dus wel met een tijdelijke file, maar daar kom je volgens mij niet onderuit. Als je namelijk gelijk terug schrijft naar het bronbestand, hou je alleen de eerste regel over
    En moet ik dit voor de 1000en bestanden doen die in mijn dir staan?

  7. #7
    Lijnen verwijderen die een bepaalde text bevatten
    geregistreerd gebruiker
    437 Berichten
    Ingeschreven
    27/10/06

    Locatie
    Delft

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Lijnen? Regels bedoel je? Ik snapte er werkelijk geen moer van.

  8. #8
    Lijnen verwijderen die een bepaalde text bevatten
    geregistreerd gebruiker
    164 Berichten
    Ingeschreven
    28/04/08

    Locatie
    Wetteren

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Thread Starter
    Citaat Oorspronkelijk geplaatst door xabin Bekijk Berichten
    Lijnen? Regels bedoel je? Ik snapte er werkelijk geen moer van.
    Ja regels bedoel ik sorry.

  9. #9
    Lijnen verwijderen die een bepaalde text bevatten
    addicted!
    1.457 Berichten
    Ingeschreven
    13/09/03

    Locatie
    Tilburg / KVK Midden Brabant

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    6 Berichten zijn liked


    Naam: M. Groenleer
    Registrar SIDN: JA

    Volgens mij, maar mijn linux shell scripting is niet zo geweldig, kom je dan uit op iets als het volgende:

    Code:
    for file in $(ls); do
    	mv $file tmpfile.txt
    	grep -v "foobar" tmpfile.txt > $file
    	rm tmpfile.txt
    done
    Uiteraard wel zelf testen voor je het op je live bestanden los laat.

  10. #10
    Lijnen verwijderen die een bepaalde text bevatten
    Programmeur / Hoster
    3.952 Berichten
    Ingeschreven
    20/06/06

    Locatie
    Wijlre

    Post Thanks / Like
    Mentioned
    28 Post(s)
    Tagged
    0 Thread(s)
    647 Berichten zijn liked


    Naam: John Timmer
    Bedrijf: SystemDeveloper.NL
    Functie: Eigenaar
    URL: www.systemdeveloper.nl
    KvK nummer: 14083066
    View johntimmer's profile on LinkedIn

    Citaat Oorspronkelijk geplaatst door GuusDeGraeve Bekijk Berichten
    Hiermee kan ik jammer genoeg niet echt iets doen, in mijn geval moet hij de volledige lijnen echt verwijderen. Het moet ook in het bestand zelf worden aangepast, niet via een bak file dus. Ik vermoed dat dit enkel de '.bak' uit het commando weghalen is?

    Iemand die iets weet om die volledige lijnen te verwijderen?
    Zoals ik dus zei....

    server32# cat test.ext1
    regel 1
    regel 2
    regel 3
    regel 4

    server32# perl -pi.bak -e 's/regel 3//g' test.ext1

    server32# cat test.ext1
    regel 1
    regel 2
    regel 4

    server32# ls -al
    total 8
    drwxr-xr-x 2 root admin 512 Oct 22 17:45 .
    drwx--x--x 7 admin admin 512 Oct 22 17:43 ..
    -rw-r--r-- 1 root admin 26 Oct 22 17:45 test.ext1
    -rw-r--r-- 1 root admin 33 Oct 22 17:44 test.ext1.bak

    Edit: Ow en je kunt ook wildcards gebruiken zoals:
    server32# perl -pi.bak -e 's/regel 3//g' *
    server32# perl -pi.bak -e 's/regel 3//g' */*/*/test.ext1

    Zo un je complete subdirs ook aanpassen.
    SystemDeveloper.NL - 64BitsWebhosting.EU : Softwareontwikkeling & Hosting freaks

  11. #11
    Lijnen verwijderen die een bepaalde text bevatten
    geregistreerd gebruiker
    164 Berichten
    Ingeschreven
    28/04/08

    Locatie
    Wetteren

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Thread Starter
    Citaat Oorspronkelijk geplaatst door systemdeveloper Bekijk Berichten
    Zoals ik dus zei....

    server32# cat test.ext1
    regel 1
    regel 2
    regel 3
    regel 4

    server32# perl -pi.bak -e 's/regel 3//g' test.ext1

    server32# cat test.ext1
    regel 1
    regel 2
    regel 4

    server32# ls -al
    total 8
    drwxr-xr-x 2 root admin 512 Oct 22 17:45 .
    drwx--x--x 7 admin admin 512 Oct 22 17:43 ..
    -rw-r--r-- 1 root admin 26 Oct 22 17:45 test.ext1
    -rw-r--r-- 1 root admin 33 Oct 22 17:44 test.ext1.bak

    Edit: Ow en je kunt ook wildcards gebruiken zoals:
    server32# perl -pi.bak -e 's/regel 3//g' *
    server32# perl -pi.bak -e 's/regel 3//g' */*/*/test.ext1

    Zo un je complete subdirs ook aanpassen.
    Bedankt voor de info, ik snap het maar toch denk ik dat dit nog niet volledig doet wat ik vraag. Stel nu dat we deze situatie hebben:

    # cat test1.txt
    Test regel 1
    Test regel 2
    test regel 3
    Test 4 regel

    en we voeren dit commando uit:
    # perl -pi.bak -e 's/regel 3//g' test.ext1

    Het test1.txt bestand is aangepast maar niet de volledige regel is verwijderd (enkel de string/tekst die ik meegaf in het commando is er uit):

    # cat test1.txt.bak
    Test regel 1
    Test regel 2
    test
    Test 4 regel

    Dit is dus het probleem, de regel moet verwijderd worden als een bepaalde tekst in die regel voorkomt. De tekst is daarom niet altijd gelijk aan de volledige regel. Hierboven wil ik bijvoorbeeld een regel verwijderen als de tekst "regel 3" er in zit. Jammer genoeg lukt dit niet met het commando dat je mij gaf.

  12. #12
    Lijnen verwijderen die een bepaalde text bevatten
    Programmeur / Hoster
    3.952 Berichten
    Ingeschreven
    20/06/06

    Locatie
    Wijlre

    Post Thanks / Like
    Mentioned
    28 Post(s)
    Tagged
    0 Thread(s)
    647 Berichten zijn liked


    Naam: John Timmer
    Bedrijf: SystemDeveloper.NL
    Functie: Eigenaar
    URL: www.systemdeveloper.nl
    KvK nummer: 14083066
    View johntimmer's profile on LinkedIn

    Citaat Oorspronkelijk geplaatst door GuusDeGraeve Bekijk Berichten
    Bedankt voor de info, ik snap het maar toch denk ik dat dit nog niet volledig doet wat ik vraag. Stel nu dat we deze situatie hebben:

    # cat test1.txt
    Test regel 1
    Test regel 2
    test regel 3
    Test 4 regel

    en we voeren dit commando uit:
    # perl -pi.bak -e 's/regel 3//g' test.ext1

    Het test1.txt bestand is aangepast maar niet de volledige regel is verwijderd (enkel de string/tekst die ik meegaf in het commando is er uit):

    # cat test1.txt.bak
    Test regel 1
    Test regel 2
    test
    Test 4 regel

    Dit is dus het probleem, de regel moet verwijderd worden als een bepaalde tekst in die regel voorkomt. De tekst is daarom niet altijd gelijk aan de volledige regel. Hierboven wil ik bijvoorbeeld een regel verwijderen als de tekst "regel 3" er in zit. Jammer genoeg lukt dit niet met het commando dat je mij gaf.
    Dan doe je dat een beetje anders:

    perl -pi.bak -e 's/(.*foobar.*)/#$1/g' *.txt

    Zal alle regels met 'foobar' prefixen met een '#' teken (Perl commentaar)

    perl -pi.bak -e 's/(.*foobar.*)/\/*$1*\//g' *.txt

    Maakt er commentaar van met /* */ (php etc)

    perl -pi.bak -e 's/(.*foobar.*)//g' *.txt

    Verwijderd de hele regel.

    Je kunt er alle kanten mee op, dus ook de jouwe

    Succes!
    SystemDeveloper.NL - 64BitsWebhosting.EU : Softwareontwikkeling & Hosting freaks

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics