naar aanleiding van een vorig topic van mij even het volgende:
Ik probeer in een string, gescheiden door pipe-tekens (|) bepaalde regels er uit te halen.
In het vorig topic wilde ik uit een bestand een regel halen als in de 6e kolom het getal 06
stond. Dat leverde dit op:
Nu ga ik een stapje verder: in een bestand vol met regels zoals onderstaande, probeer ik voor
elkaar te krijgen dat alle regels waar in de vierde kolom het getal 01 staat, alsmede de 6e
kolom het getal 03,04,05 of 06 bevat, er uit te filteren.
Dus een regel als deze:
zou er door dit fraaie grepwerk uitgehaald moeten worden:
Maar dat werkt niet.
Dat greppen zou volgens mij dit moeten doen:
kijk vanaf het begin van de regel tot je een | teken tegenkomt, dat 3x en kijk of daar 01 staat. Kijk vervolgens 2x een | teken verder of daar 03, 04, 05 of 06 staat, gevolgd door een | teken.
zelfs als ik alleen het eerste stuk van dat grepcommando geef en kijk wat er in de 4e kolom staat:
staan er allerlei getallen, niet alleen 01!
Ik doe mijn best, maar snap nu toch echt even niet meer waar ik aan toe ben....
Dus plz geen antwoord als RTFM, man bash en dat soort dingen roepen
Ik probeer in een string, gescheiden door pipe-tekens (|) bepaalde regels er uit te halen.
In het vorig topic wilde ik uit een bestand een regel halen als in de 6e kolom het getal 06
stond. Dat leverde dit op:
code:
1
| grep -E "^(\w+\|){6}03\|" bronbestand |
Nu ga ik een stapje verder: in een bestand vol met regels zoals onderstaande, probeer ik voor
elkaar te krijgen dat alle regels waar in de vierde kolom het getal 01 staat, alsmede de 6e
kolom het getal 03,04,05 of 06 bevat, er uit te filteren.
Dus een regel als deze:
code:
1
| 009 01|0576|2445|01|200403171334|00|06|000000+|etc.etc.etc. |
zou er door dit fraaie grepwerk uitgehaald moeten worden:
code:
1
| /usr/linux/bin/grep -E "^(.+\|){3}01\|(.+\|){2}(03|04|05|06)\|" bronbestand |
Maar dat werkt niet.
Dat greppen zou volgens mij dit moeten doen:
kijk vanaf het begin van de regel tot je een | teken tegenkomt, dat 3x en kijk of daar 01 staat. Kijk vervolgens 2x een | teken verder of daar 03, 04, 05 of 06 staat, gevolgd door een | teken.
zelfs als ik alleen het eerste stuk van dat grepcommando geef en kijk wat er in de 4e kolom staat:
code:
1
| /usr/linux/bin/grep -E "^(.+\|){3}01\|" bronbestand | cut -d"|" -f4 |
staan er allerlei getallen, niet alleen 01!
Ik doe mijn best, maar snap nu toch echt even niet meer waar ik aan toe ben....
Dus plz geen antwoord als RTFM, man bash en dat soort dingen roepen
ach...in een volgend leven lach je er om!