grep

Grep voor meerdere patronen of snaren

Grep voor meerdere patronen of snaren
Global Regular Expression Print of Grep is een krachtig hulpprogramma dat wordt gebruikt in het Linux-besturingssysteem. Via grep kun je zoeken in bestanden met verschillende patronen of tekenreeksen door beperkingen toe te passen. De Grep-functie heeft een of meer invoerbestanden nodig om in mappen of submappen te zoeken. Om naar talrijke patronen te zoeken, gebruiken we de OR-operator. Deze operator wordt gebruikt om de patronen te scheiden die in de opdracht zijn geschreven separate. De wijzigingsoperator "|" wordt gebruikt met de backslash. De syntaxis voor het zoeken naar verschillende reguliere expressies is als volgt:

Syntaxis

$ grep 'patroon1\|patroon2' bestandsnaam

Een reguliere expressie wordt altijd in een enkel aanhalingsteken geschreven. Twee namen worden gescheiden met backslash en wijzigingsoperator. De opdracht wordt afgesloten met de bestandsnaam. Tijdens het recursief grep wordt de map of het hele pad gebruikt in plaats van een enkele bestandsnaam.

Voorwaarde

In dit artikel zullen we de functionaliteit van grep leren bij het zoeken naar meerdere patronen en strings. Voor dit doel moet het Linux-besturingssysteem op uw virtuele box draaien. U moet het op uw systeem installeren. Na de configuratie heeft u toegang tot alle applicaties. Nadat u zich bij de gebruiker hebt aangemeld door een wachtwoord op te geven, gaat u naar de opdrachtregel van de terminalshell om verder te gaan.

Zoeken op meerdere patronen in een bestand met Grep

Als we meerdere patronen of strings in een bepaald bestand willen zoeken, gebruik dan de grep-functionaliteit om binnen een bestand te sorteren met behulp van meer dan één invoerwoord in de opdracht. Wij gebruiken '\|' operators voor de scheiding van twee patronen in een opdracht.

$ grep 'technisch\|job' bestanda.tekst

Het commando geeft weer hoe grep werkt. Beide genoemde bestanden worden doorzocht in filea.tekst. Gezochte woorden worden gemarkeerd in de hele tekst van de uitvoer.

Om meer dan twee woorden te zoeken, zullen we ze op dezelfde manier blijven toevoegen.

$ grep 'grafisch\|photoshop\|posters' bestandb.tekst

Zoek meerdere strings door hoofdletters te negeren

Overweeg het volgende voorbeeld om het concept van hoofdlettergevoeligheid in de grep-functie in Linux te begrijpen:. Twee commando's werken op grep. De ene is met '-i' en de andere is zonder. Dit voorbeeld demonstreert de verschillen tussen de commando's. De eerste laat zien dat er in een bepaald bestand op twee woorden wordt gezocht. Echter, zoals aangegeven in het commando "Aqsa", begint het met hoofdletter A. Het wordt dus niet gemarkeerd omdat deze tekst in een bepaald bestand in kleine letters staat.

$ grep 'Aqsa\|sister' bestand20.tekst

Er wordt alleen rekening gehouden met het woord zuster, dat te zien zal zijn in de uitvoer.

In het tweede voorbeeld hebben we hoofdlettergevoeligheid genegeerd door de vlag "-I" te gebruiken. Deze functie zoekt in beide woorden en de uitvoer wordt gemarkeerd. Of het woord 'Aqsa' nu in hoofdletters is geschreven of niet, grep zoekt naar dezelfde overeenkomst in tekst in een bestand. Beide commando's zijn dus nuttig op hun manier.

$ grep -I 'Aqsa\|sister' bestand20.tekst

Meerdere overeenkomsten in een bestand tellen

Telfunctie helpt bij het tellen van het voorkomen van een woord of woorden in een bepaald bestand. Als u bijvoorbeeld wilt weten welke fouten in het systeem optreden:. Het detail wordt vastgelegd in het logbestand. Om deze informatie in een specifieke map te bewaren, schrijft u het pad van mappen. Dit voorbeeld laat zien dat er 71 fouten zijn opgetreden in logbestanden.

Zoek exacte overeenkomsten in een bestand

Als u een exacte overeenkomst in de bestanden van uw systeem wilt vinden, moet u de vlag "-w" gebruiken om deze nauwkeurig te sorteren. We hebben een eenvoudig en uitgebreid voorbeeld gegeven. Overweeg in het onderstaande voorbeeld te zoeken zonder "-w", deze opdracht zal beide woorden weergeven als overeenkomend met de gegeven invoer. Maar met het gebruik van de "-w" vlag, zal het zoeken beperkt zijn omdat invoerwoorden alleen overeenkomen met de eerste string. Het tweede woord is niet gemarkeerd omdat "-w" nauwkeurige afstemming met het patroon mogelijk maakt.

$ -iw 'hamna\|huis' bestand21.tekst

Hier wordt -I ook gebruikt om hoofdlettergevoeligheid te verwijderen bij het zoeken naar tekst.

Zoals te zien op de foto, zijn de resultaten niet hetzelfde. De eerste opdracht brengt alle gerelateerde gegevens met hele tekenreeksen, terwijl de tweede opdracht laat zien hoe exacte gegevens overeenkomen via grep bij het zoeken naar meerdere tekenreeksen.

Grep voor meer dan één patroon in een specifiek bestandsextensietype

Zoeken gebeurt binnen alle bestanden. Het is aan jou of je zoekt door de bestandsnaam op te geven. Er wordt alleen in specifieke bestanden gezocht. Maar door een bestandsextensie op te geven, worden gegevens doorzocht in alle bestanden met dezelfde extensie. Er zijn twee verschillende voorbeelden om het gerelateerde resultaat weer te geven. Gezien het eerste voorbeeld, worden foutbestanden geteld in alle bestanden van de .log extensie. "-c" wordt gebruikt om te tellen.

$ grep -c 'waarschuwing\|fout' /var/log/*.log

Dit commando houdt in dat de bestanden worden doorzocht in alle bestanden van de .log extensie. Het aantal overeenkomsten wordt weergegeven in de uitvoer om grep beter te demonstreren met de specifieke bestandsextensie.

In het tweede voorbeeld hebben we twee woorden gebruikt in onze bestanden in Linux met de extensie tekst. Alle gegevens worden weergegeven in de vorm van getallen. 0 geeft aan dat er geen overeenkomende gegevens zijn, terwijl anders dan 0 aangeeft dat er een overeenkomst bestaat.

$ grep -c 'aqsa\|mijn' /home/aqsayasin/*.tekst

Meerdere patronen recursief zoeken in een bestand

Standaard wordt de huidige map gebruikt als er geen map wordt genoemd in de opdracht. Als je wilt zoeken in de directory van je eigen keuze, dan moet je dat vermelden. De operator "-r" wordt recursief gebruikt voor grep./home/aqsayasin/ toont het pad van bestanden, terwijl *.txt toont de extensie. Tekstbestanden zijn het doel voor grep om recursief te zoeken.

$ grep -R 'technisch\|gratis' /home/aqsayasin/*.tekst

De gewenste uitvoer wordt gemarkeerd in het resultaat en toont het bestaan ​​van deze woorden.

Conclusie

In het hierboven genoemde artikel hebben we verschillende voorbeelden aangehaald om het voor een gebruiker gemakkelijker te maken om de werking van opdrachten te begrijpen om meerdere patronen op Linux te doorzoeken. Deze gids zal u helpen bij het escaleren van uw bestaande kennis.

Linkermuisknop werkt niet op Windows 10
Als u een speciale muis gebruikt met uw laptop of desktopcomputer, maar de linkermuisknop werkt niet not op Windows 10/8/7 om wat voor reden dan ook, ...
Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...
De scrollrichting van de muis en touchpads omkeren in Windows 10
Muis en Touchpads maken computergebruik niet alleen eenvoudig, maar ook efficiënter en minder tijdrovend. We kunnen ons een leven zonder deze apparate...