The UNIX and Linux Forums  
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.

Go Back   UNIX och Linux Forum > Upp Forum > UNIX for Dummies Frågor & Svar
.
google unix.com



UNIX for Dummies Frågor & Svar Om du inte är säker på var att skriva en UNIX eller Linux fråga efter det här. Alla UNIX-och Linux-nybörjare välkomna!

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Recursive FTP - här äntligen. Perderabo Shell-programmering och Skript 52 03-25-2009 12:15
rekursiva grep fråga Mace UNIX for Dummies Frågor & Svar 1 08-11-2006 07:39
rekursiva grep? alan UNIX for Dummies Frågor & Svar 3 08-22-2003 03:15
grep Rekursiva kataloger jagannatha UNIX for Dummies Frågor & Svar 8 07-24-2003 04:00
Recursive FTP aslamg UNIX for Dummies Frågor & 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 denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 05-16-2008
upstate_boy upstate_boy is offline
Registered User
  
 

Join Date: maj 2008
Inlägg: 17
Recursive grep

Hej,

Första Temne post - Jag har ingen formell UNIX utbildning och kunde behöva lite hjälp med detta. Jag har en lista med strängar i fil1 att jag vill använda för att göra en rekursiv sök (grep) under en särskild katalog.


Här är ett exempel på strängen jag behöver för att söka:

/ katalog / dire ctory / katalog / dire ctory / filename

Jag försöker visa att strängen är en fullständig sökväg till katalog på en fil där vissa av de kataloger som har platser i deras namn.

Jag har följande skript:

för hi `cat fil1" do grep-rl "$ h" /../../../../../>> /../../ fil2, gjort

Så jag försöker säga för varje sträng i fil1, gör en rekursiv grep i den angivna katalogen och skriva ut resultaten till fil2.

Problemet (tror jag) Jag löper i är det format i strängen jag letar, katten jag gör är att behandla de utrymmen som undgår som kastar grep avstängd. Jag har försökt att strängen i singel och dubbel citat, men det är fortfarande inte fungerar.

Vi ber om ursäkt för bristen på teknisk terminologi - Jag hoppas jag var tydlig nog.

Om någon kan erbjuda någon hjälp med det arbete med vad jag har eller ett enklare alternativ till vad jag har, det skulle vara en stor hjälp.

Tack - påbörjat pojke
  #2 (permalänk)  
Old 05-16-2008
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: februari 2004
Ort: NM
Inlägg: 5.754
Kod:
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 <file> sätt att använda strängar i <file> som sökadressen strängar för grep.
Klar> filename del skriver produktionen av slingan till filename

Senast ändrad av Jim McNamara, 05-16-2008 vid 09:07..
  #3 (permalänk)  
Old 05-16-2008
eran era is offline Forum Advisor  
Herder av Useless Cats (På sabbatsår)
  
 

Join Date: mars 2008
Ort: / det är / / bara / bin / sh
Inlägg: 3652
Den relativa sökvägen till fil2 verkar fel, utdatat omdirigering är i förhållande till den aktuella katalogen, inte katalogen i den fil du grepping.

Den relativa pat du grepping verkar fel också, / .. / motsvarar / motsvarar /../../../../../

Den backticks i för slinga är det som delats upp grejer på blanksteg. Använd en konstruktion som är mindre känsliga för avstånd frågor, eller använda ett korrekt citat.

Kod:
for h in "`cat file1`"; do grep -rl "$h" pathtodir >>file2; done
eller

Kod:
while read h; do grep -rl "$h" pathtodir >>file2; done<file1
  #4 (permalänk)  
Old 05-16-2008
upstate_boy upstate_boy is offline
Registered User
  
 

Join Date: maj 2008
Inlägg: 17
Tack båda för svar. Jag tror inte jag är verkställande ditt förslag riktigt, jag har provat alla 3.

Jim,

Jag är definitivt förvirrad av vilka filer gå där när jag läser din.

antar:
strings.txt \u003d fil med strängar jag vill hitta
results.txt \u003d utdatafilen sökresultat

Jag försöker:

hitta / katalog / jag / vill / search /-type f | \
samtidigt läsa results.txt
göra
grep-f strings.txt $ results.txt
gjord

När jag använder det här, jag:

lyda: "results.txt": inte en giltig identifierare

era,

Jag fick inte något fel med dina förslag men strängar jag letar fortfarande brytas upp, vilket innebär att de utrymmen eller "/" i strängar som hanteras som bryter vrida 1 strängen i flera små strängar som var få sökte.

Ett bättre exempel på vad jag ursprungligen försöker göra är:

För H i "katt strings.txt" do grep-rl "$ h" / katalog / stig / jag vill / att / search />> / home / katalog / results.txt, gjort

använder /../../ i mitt första inlägg var inte det bästa valet för min del när de motsvarande tillbaka fästingar.


Jag kommer att fortsätta att fiol med alla de förslag om ytterligare vägledning kan erbjudas det skulle vara en stor hjälp.


Tack påbörjat pojke
  #5 (permalänk)  
Old 05-16-2008
eran era is offline Forum Advisor  
Herder av Useless Cats (På sabbatsår)
  
 

Join Date: mars 2008
Ort: / det är / / bara / bin / sh
Inlägg: 3652
Variabeln i Jim exempel inte kan namnges results.txt, bara ändra den till t.ex. "file" och du ska bli bra.

Allt med stora utrymmen i den bör vara dubbelt citerade.
  #6 (permalänk)  
Old 05-16-2008
upstate_boy upstate_boy is offline
Registered User
  
 

Join Date: maj 2008
Inlägg: 17
Jag har ändrat det till:

hitta / katalog / jag / vill / search /-type f | \
samtidigt läsa filen
göra
grep-f strings.txt $ results.txt
gjord

Resultat nu är:

grep:. txt: Ingen sådan fil eller katalog

Kan någon klargöra exakt hur jag skulle ha det bygger på exempel som jag har använt?

Tack påbörjat pojke
  #7 (permalänk)  
Old 05-16-2008
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: februari 2004
Ort: NM
Inlägg: 5.754
Se redigera ovan, i rött.
Closed Thread

Komihåglista

Taggar
grep, grep rekursiv, rekursiva grep

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 10:44.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0