Alleen exacte overeenkomsten weergeven met grep

Hoe kan ik alle taken weergeven die alleen OK zijn geëindigd?

Wanneer ik de onderstaande opdracht probeer, toont het zowel OK als notok sinds beide “OK”

hebben

ctmpsm -listall application | grep OK

Antwoord 1, Autoriteit 100%

Heb je een meer specifieke uitdrukking nodig. Probeer grep " OK$"of grep "[0-9]* OK". U wilt een patroon kiezen dat overeenkomt met wat u wilt, maar komt niet overeen met wat u niet wilt. Dat patroon hangt af van wat uw volledige bestandsinhoud eruit zou kunnen zien.

U kunt ook doen: grep -w "OK"die alleen overeenkomt met een geheel woord “OK”, zoals “1 OK”, maar komt niet overeen met “1OK” of “OKFINE” .

$ cat test.txt | grep -w "OK"
1 OK
2 OK
4 OK

Antwoord 2, Autoriteit 45%

Dit kan voor u werken

grep -E '(^|\s)OK($|\s)'

Antwoord 3, Autoriteit 7%

Dit werkte voor mij :

grep  "\bsearch_word\b"  text_file > output.txt  ## \b indicates boundaries. This is much faster.

of,

grep -w "search_word" text_file > output.txt

Antwoord 4, Autoriteit 7%

U kunt de -v-schakelaar gebruiken om strings uit te sluiten.

Hiermee wordt elk regel afgesloten in OKen verwijder vervolgens elke regel die NOT:

bevat

(Indien OKverschijnt niet aan het einde, verwijder gewoon de $.)

cat test.txt | grep 'OK$' | grep -v 'NOT'

Antwoord 5, Autoriteit 2%

Probeer dit:

Alex Misuno@hp4530s ~
$ cat test.txt
1 OK
2 OK
3 NOTOK
4 OK
5 NOTOK
Alex Misuno@hp4530s ~
$ cat test.txt | grep ".* OK$"
1 OK
2 OK
4 OK

Antwoord 6, Autoriteit 2%

Probeer de onderstaande opdracht, omdat het perfect werkt:

grep -ow "yourstring"
crosscheck:-

Verwijder de instantie van het woord uit het bestand, voer deze opdracht opnieuw uit en het resultaat zou leeg moeten zijn.


Antwoord 7, autoriteit 2%

probeer dit:

grep -P '^(tomcat!?)' tst1.txt

Het zoekt naar een specifiek woord in een txt-bestand. Hier proberen we het woord tomcat

te zoeken


Antwoord 8

Onlangs kwam ik een probleem tegen in grep. Ik probeerde het patroon x.y.z te matchen en grep retourneerde x.y-z. Met behulp van een reguliere expressie kunnen we dit misschien ondervangen, maar met grep hielp het niet om hele woorden te matchen. Aangezien het script dat ik aan het schrijven was een generiek script is, kan ik het zoeken naar een specifieke manier niet beperken zoals in x.y.z of x.y-z ..

De snelle manier die ik dacht, is om een grep uit te voeren en vervolgens een conditiecontrole
var=”x.y.z”
var1=grep -o x.y.z file.txt
als [ $var1 == $var]
echo “Patroon komt exact overeen”
anders
echo “Patroon komt niet exact overeen”
fi

https://linuxacatalyst.blogspot.com/2019 /12/grep-pattern-matching-issues.html

Other episodes