![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| UNIX for Dummies Spørsmål og svar Hvis du er usikker på hvor du skal legge inn en UNIX-eller Linux-spørsmålet, legger den her. Alle UNIX og Linux newbies velkommen! |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| Rekursiv FTP - her sist. | Perderabo | Shell programmering og Skripting | 52 | 03-25-2009 12:15 |
| Rekursiv grep problemet | Mace | UNIX for Dummies Spørsmål og svar | 1 | 08-11-2006 08:39 |
| Rekursiv grep? | alan | UNIX for Dummies Spørsmål og svar | 3 | 08-22-2003 04:15 |
| grep Rekursiv kataloger | jagannatha | UNIX for Dummies Spørsmål og svar | 8 | 07-24-2003 05:00 |
| Rekursiv FTP | aslamg | UNIX for Dummies Spørsmål og svar | 1 | 03-08-2001 04:27 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Rekursiv grep
Hallo,
Første gang post - Jeg har ingen formell unix trening og trenger litt hjelp med dette. Jeg har en liste over strenger i File1 at jeg vil bruke til å gjøre en Rekursiv søk (grep) under en bestemt katalog. Her er et eksempel på strengen jeg trenger for å søke: / katalog / Dire ctory / katalog / Dire ctory / filnavn Jeg prøver å illustrere at strengen er et fullt katalogbane på en fil der noen av katalogene ha mellomrom i navnene deres. Jeg så har følgende skript: for t på `cat file1`; gjøre grep-RL "$ h" /../../../../../>> /../../ file2; gjort Så prøver jeg å si for hver streng i file1 gjøre en Rekursiv grep i spesifisert katalog og skrive ut resultatene til file2. Problemet (tror jeg) Jeg kjører i er formatet av strengen Jeg søker, katten jeg gjør er å behandle mellomrom som unnslipper som kaster den grep av. Jeg har prøvd å sette strengen i enkle og doble anførselstegn, men det fortsatt ikke fungerer. Sorry for manglende teknisk terminologi - Jeg håper jeg var tydelig nok. Hvis noen kan tilby hjelp med å gjøre det med det jeg har, eller et enklere alternativ til det jeg har, vil det være en stor hjelp. Takk - upstate gutt |
|
||||
|
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
grep-f <fil> betyr å bruke strenger i <fil> som søk strenger for grep. Utført> filename del skriver utdataene for loop til filnavn Sist endret av jim McNamara; 05-16-2008 på 10:07.. |
|
||||
|
Den relative banen til file2 synes galt; utdataene omadressering er relativ til gjeldende katalog, ikke katalogen med filen du grepping. Den relative pat du grepping synes feil for; / .. / tilsvarer / tilsvarer /../../../../../ Den backticks i for loop er hva splitte opp ting på mellomrom. Bruk en oppbygging som er mindre følsom for orddeling problemer, eller bruke riktig sitering. Code:
for h in "`cat file1`"; do grep -rl "$h" pathtodir >>file2; done eller Code:
while read h; do grep -rl "$h" pathtodir >>file2; done<file1 |
|
||||
|
Takk både for svar. Jeg tror ikke jeg gjennomføre forslagene dine riktig, jeg har prøvd alle 3.
Jim, Jeg er helt forvirret av hvilke filer gå der da jeg leste ditt. anta: strings.txt \u003d fil med strengene jeg vil finne results.txt \u003d utdatafilen med søkeresultater Jeg prøver: finne / katalog / I / vil / search /-type f | \ mens du leser results.txt gjøre grep-f strings.txt $ results.txt ferdig Når jeg bruker dette, får jeg: Les: `results.txt ': ikke en gyldig identifikatoren era, Jeg fikk ikke noe feil med deres forslag men strenger Jeg søker fortsatt blir brutt opp, betyr det mellomrom eller '/' i strenger blir håndtert som bryter snu 1 streng i flere små strenger som hver får søkte. Et bedre eksempel på hva jeg var opprinnelig prøver å gjøre er: for t på `cat strings.txt`; gjøre grep-RL "$ h" / katalog / bane / jeg ønsker / til / søk />> / home / katalog / results.txt; gjort bruker /../../ i mitt opprinnelige innlegg var ikke det beste valget for min del når de tilsvarende tilbake ticks. Jeg kommer til å fortsette å fele med alle forslag, hvis noen ytterligere veiledning kan tilbys det ville være en stor hjelp. Takk upstate gutt |
|
||||
|
Variabelen i Jim's eksempel kan ikke navngitt results.txt; bare endre den til f.eks "fil" og du bør være i orden.
Alt med en betydelig plass i det skal være dobbel sitert. |
|
||||
|
Jeg har endret det til:
finne / katalog / I / vil / search /-type f | \ mens lese filen gjøre grep-f strings.txt $ results.txt ferdig Resultater nå er: grep:. txt: Ingen slik fil eller katalog Kan noen stave ut nøyaktig hvordan jeg skal ha det, basert på eksempel Jeg bruker? Takk upstate gutt |
![]() |
| Hugseliste |
| Tags |
| grep, grep Rekursiv, Rekursiv grep |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|