![]() |
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| UNIX voor Dummies Questions & Answers Als u niet zeker weet waar je een Unix-of Linux vraag, post het hier. Alle UNIX-en Linux beginners van harte welkom!! |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| Recursief FTP - hier op het laatst. | Perderabo | Programmeren en Shell Scripting | 52 | 03-25-2009 12:15 |
| recursieve grep kwestie | Mace | UNIX voor Dummies Questions & Answers | 1 | 08-11-2006 07:39 |
| recursieve grep? | alan | UNIX voor Dummies Questions & Answers | 3 | 08-22-2003 03:15 |
| grep recursieve abonneelijsten | jagannatha | UNIX voor Dummies Questions & Answers | 8 | 07-24-2003 04:00 PM |
| Recursief FTP | aslamg | UNIX voor Dummies Questions & Answers | 1 | 03-08-2001 04:27 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Recursief grep
Hallo,
Eerste bericht - Ik heb geen formele opleiding unix en kan wel wat hulp gebruiken met dit. Ik heb een lijst van strings File1 dat ik wil gebruiken om een recursieve zoeken (grep) onder een bepaalde directory. Hier is een voorbeeld van de string ik nodig om te zoeken: / directory / dire ctory / directory / dire ctory / bestandsnaam Ik probeer om te illustreren dat de string is een volledige directory pad van een bestand waarin een aantal van de directories hebben ruimten in hun naam. Vervolgens heb ik het volgende script: voor h in `cat bestand1"; doen grep-rl "$ h" /../../../../../>> /../../ bestand2; gedaan Dus, ik probeer te zeggen voor elke string in bestand1, doe een recursieve grep in de gespecificeerde directory en afdrukken van de resultaten aan bestand2. Het probleem (denk ik) Ik ben actief in het format van de string ik zoek, de kat Ik ben bezig is de behandeling van de ruimten als ontsnapt die gooit het grep uitgeschakeld. Ik heb geprobeerd om de string in enkele en dubbele aanhalingstekens, maar het is nog steeds niet werkt. Sorry voor het ontbreken van technische terminologie - Ik hoop dat ik duidelijk was genoeg. Als iemand geen hulp kan bieden op het maken van het werken met wat ik heb of een eenvoudiger alternatief voor wat ik heb, het zou een grote hulp. Bedankt - upstate jongen |
|
||||
|
Code:
find /path/to/search/in -type f | \
while read filename
do
grep -f /path/to/strings.txt $filename
done > /home/upstate_boy/results.txt
De gedaan> bestandsnaam deel schrijft de uitvoer van de lus aan de bestandsnaam Laatst gewijzigd door Jim McNamara; op 05.16.2008 09:07.. |
|
||||
|
De relatieve pad naar bestand2 lijkt verkeerd; de output redirection is ten opzichte van de huidige directory, en niet de map van het bestand dat u Grepping.
De relatieve pat u Grepping lijkt mis te / .. / is gelijk aan / is gelijk aan /../../../../../ De backticks in de lus wordt wat zijn opsplitsing spullen op witruimte. Gebruik een constructie die is minder gevoelig voor spatiëring kwesties, of gebruik een goede citeren. Code:
for h in "`cat file1`"; do grep -rl "$h" pathtodir >>file2; done Code:
while read h; do grep -rl "$h" pathtodir >>file2; done<file1 |
|
||||
|
Dank u voor de antwoorden. Ik denk niet dat ik de uitvoering van uw suggesties correct, ik heb geprobeerd alle 3.
Jim, Ik ben zeker verward met die bestanden gaan waar toen las ik de jouwe. nemen: strings.txt \u003d bestand met strijkers Ik wil vinden results.txt \u003d output file van zoekresultaten Ik probeer: find / directory / I / willen / zoeken /-type f | \ terwijl lees results.txt doen grep-f strings.txt $ results.txt gedaan Wanneer gebruik ik dit, dan krijg ik: te lezen: "results.txt ': geen geldig identificatiemiddel tijdperk, Ik heb niet veel fouten met uw suggesties strijkers maar ik zoek nog steeds worden gesloopt, wat betekent dat de ruimten of '/' in de strijkers worden behandeld als pauzes keerpunt 1 string in een aantal kleine strings, die elk steeds gezocht. Een beter voorbeeld van wat ik oorspronkelijk was proberen te doen is: voor h in `cat strings.txt"; doen grep-rl "$ h" / map / pad / ik wil / naar / zoeken />> / home / directory / results.txt; gedaan met behulp van /../../ in mijn oorspronkelijke bericht is niet de beste keuze van mijn kant als ze het equivalent van terug teken. Ik ga blijven viool met alle suggesties, eventueel nadere aanwijzingen kunnen worden aangeboden, het zou een grote hulp. Dankzij upstate jongen |
|
||||
|
De variabele in Jim's voorbeeld kan niet worden vernoemd results.txt; gewoon veranderen in bijvoorbeeld "bestand" en je moet wel goed.
Alles met grote ruimten moet worden dubbele aanhalingstekens. |
|
||||
|
Ik heb het naar:
find / directory / I / willen / zoeken /-type f | \ terwijl lezen bestand doen grep-f strings.txt $ results.txt gedaan Resultaten nu zijn: grep:. txt: No such file or directory Kan iemand spellen precies hoe ik zou hebben gebaseerd op het voorbeeld dat ik heb gebruikt? Dankzij upstate jongen |
![]() |
| Bladwijzers |
| Labels |
| grep, grep recursieve, recursieve grep |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|