Hur man söker med “grep” med hjälp av strängar i en fil

0
153

Grep är ett fantastiskt verktyg för att söka igenom loggfiler och ta fram användbar information , men vad händer om du vill söka i en loggfil med hjälp av en gigantisk lista med nyckelord från en annan fil? Lyckligtvis har den funktionen också inbyggd.

Detta hände mig när jag ville ta en lista över alla webbadresser som begärdes av ett enormt IP-block som misshandlade vår server. Efter att ha identifierat och skapat listan över tusen IP-adresser, behövde jag hämta webbadresserna från huvudloggfilen för att identifiera de mest efterfrågade resurserna.

För att göra detta vill du använda -f argument, som gör att du kan ange en fil för listan över mönster som du vill söka efter.

-f FILE, –file = FILE Hämta mönster från FILE, ett per rad. Den tomma filen innehåller inga mönster och matchar därför ingenting. (-f anges av POSIX.)

Förutsatt att din uppsättning nyckelord eller strängar finns i en fil med namnet & # 8220; söksträngar & # 8221; kan du använda argumentet på kommandoraden som i följande exempel. Eftersom den här sökningen kommer att generera massor av data kommer & # 8220; & gt; output.txt & # 8221; en del av kommandot skickar resultatet av kommandot till en fil som heter output.txt som kan analyseras separat.

grep -f söksträngar filetosearch & gt; output.txt

Det enda problemet med att använda argumentet -f är att grep kommer att försöka tolka nyckelorden som om de är mönster, vilket kan sakta ner det när man analyserar mot en extremt stor fil. Så du kan också ange parametern -F, som säger till grep att endast göra exakta matchningar mot strängarna.

-F, –fixed-strings Tolk PATTERN som en lista över fasta strängar, åtskilda av nya rader, varav någon ska matchas. (-F specificeras av POSIX.) Annons

Så hela kommandot skulle bli mer så här:

grep -F -f söksträngar filetosearch & gt; output.txt

Grep är ett löjligt kraftfullt sätt att söka i loggfiler, så det vore väl värt din tid att titta igenom manfilen.