![]() |
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.
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
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 |
|
||||
|
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
Klar> filename del skriver produktionen av slingan till filename Senast ändrad av Jim McNamara, 05-16-2008 vid 09:07.. |
|
||||
|
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 Kod:
while read h; do grep -rl "$h" pathtodir >>file2; done<file1 |
|
||||
|
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 |
|
||||
|
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 |
![]() |
| Komihåglista |
| Taggar |
| grep, grep rekursiv, rekursiva grep |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|