"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who
maw: (e)grep is een line-by-line parser.Grep searches the named input FILEs (or standard input if no files are
named, or the file name - is given) for lines containing a match to the
given PATTERN. By default, grep prints the matching lines.
misschien moet je naar sed kijken?
[ Voor 7% gewijzigd door chem op 19-02-2004 20:55 . Reden: sed ]
Klaar voor een nieuwe uitdaging.
1
| egrep "(MHz|bogomips)" /proc/cpuinfo |
Anders kan het altijd nog met sed, voor ditzelfde voorbeeld:
1
| sed -e '/MHz/b' -e '/bogomips/b' -e d /proc/cpuinfo |
Hmm, ik realiseer me nu dat dit misschien niet helemaal is wat je wilt, zo doe je namelijk gewoon "dubbele" greps, en je kijkt niet of de te zoeken woorden echt achter elkaar staat.
[ Voor 46% gewijzigd door Niek op 19-02-2004 21:00 ]
À vaincre sans péril, on triomphe sans gloire - Pierre Corneille
Hmm, met -A en -B kan je toch alleen het aantal lines na en voor de regel die je zoekt uitprinten? Je kan het iig niet gebruiken om meerdere lines in expressies aan te geven.Verwijderd schreef op 19 februari 2004 @ 20:57:
sed hoeft niet perse hoor. Grep kent ook de -A en -B switches die wel zullen voldoen
TS: misschien dat in dit documentje staat wat je zoekt.
À vaincre sans péril, on triomphe sans gloire - Pierre Corneille
Verwijderd
1
| grep -A1 -e "abc$" bestand | grep -e "^def" |
Zit je alleen nog met het feit dat "def" op dezelfde regel kan staan als "abc", maar dat valt met tail o.i.d. nog wel op te lossen.
[ Voor 11% gewijzigd door Verwijderd op 19-02-2004 22:19 ]
1
| grep -e abc -e def bestand |
of
1
| grep -E "abc|def" bestand |
werkt bij mij altijd.
Verwijderd
ik heb er mee zitten puzzelen en dit is mijn resultaat:
1
2
3
4
5
| for file in *
do
echo "$file"
bla=``echo grep -E "." ${file} | sed = |sed 'N;s/\n/\t/' |sed -s 'N;s/abc[ \t]*\n[^d]*def/[start]\0[end]/' | grep -E "\\[start\]|\\[end\]"``
done |
nogal overkill maar het werkt wel netjes met ook regel nummers enzo:
resultaat ziet er ongeveer zo uit:
1
2
3
4
5
6
| testgrep 13 asdf 1e file 2e aliena [start]abc 14 def[end] safa 1e file 2e alinea sdfsadf testgrep2 7 frfrf 2e file tweede alinea dfs [start]abc 8 def[end] dfdf 2e file tweede alinea dsf |
enige min puntje is dat als het vaker in dezelfe file voorkomt dattie het nu maar een keer matched.
[ Voor 10% gewijzigd door GiLuX op 23-02-2004 13:29 ]
"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who