The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > UNIX for Dummies Spørsmål og svar
.
google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 05-16-2008
upstate_boy upstate_boy is offline
Registrert bruker
  
 

Bli Dato: mai 2008
Innlegg: 17
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
  #2 (permalink)  
Old 05-16-2008
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Bli Date: Feb 2004
Beliggenhet: NM
Innlegg: 5807

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..
  #3 (permalink)  
Old 05-16-2008
æra era is offline Forum Advisor  
Herder av Useless Cats (På Sabbatical)
  
 

Bli Date: Mar 2008
Sted: / det / er / bare / bin / sh
Innlegg: 3652
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

  #4 (permalink)  
Old 05-16-2008
upstate_boy upstate_boy is offline
Registrert bruker
  
 

Bli Dato: mai 2008
Innlegg: 17
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
  #5 (permalink)  
Old 05-16-2008
æra era is offline Forum Advisor  
Herder av Useless Cats (På Sabbatical)
  
 

Bli Date: Mar 2008
Sted: / det / er / bare / bin / sh
Innlegg: 3652
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.
  #6 (permalink)  
Old 05-16-2008
upstate_boy upstate_boy is offline
Registrert bruker
  
 

Bli Dato: mai 2008
Innlegg: 17
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
  #7 (permalink)  
Old 05-16-2008
Jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Bli Date: Feb 2004
Beliggenhet: NM
Innlegg: 5807
Se redigere ovenfor, i rødt.
Closed Thread

Hugseliste

Tags
grep, grep Rekursiv, Rekursiv grep

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 06:02.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0