Przydatne parametry
-
-v
- wyświetla tylko te wiersze, które nie pasują do wyrażenia regularnego. -
-l
- wyświetla nazwy plików, które zawierają podane wyrażenie -
-L
- wypisuje nazwy plików, które nie zawierają podanego wyrażenia -
-c
- wypisuje jedynie liczbę wierszy spełniających warunek zgodności z podanym wyrażeniem -
-n
- wypisuje numer linii pliku gdzie występuje wzorzec -
-b
- wypisuje wynik przesunięcia w bajtach danego wiersza, pasujący do wyrażenie regularnego -
-i
- nie uwzględnia wielkości liter -
-w
- będą brane pod uwagę jedynie całe słowa -
-x
- bedą brane pod uwagę całe wiersze nie działa z-w
Przykłady użycia
Wyszukanie wszystkich pakietów zawierających słowa vim
i common
dnf search vim | grep -wE "vim|common"
Wyszukanie wszystkich pakietów zawierających słowa vim
i common
, ale pokaże
również pakiety, którchy częścią nazwy jest słowo vim
lub common
np.
neovim
.
dnf search vim | grep -E "vim|common"
Wyszukiwanie słowa we wszystkich plikach i podkatalogach bieżącej lokalizacji
grep -r [wyraz] *
Wyszukiwanie ignorując wielkość znaków
grep -i [wyraz] *
Paramter -x
Bedą brane pod uwagę całe wiersze nie działa z -w
grep [[:upper:]] -x plik.txt
Parametr -A, -B i -C
-
-A liczba
- wyświetla linię, w której występuje wzorzec a także linie niżej -
-B liczba
- wyświetla linię, w której występuje wyrażenie a także linie powyżej
grep [[:alpha:]] -B 2 plik.txt
-
-C liczba
- wyświetla szukaną linię oraz linie przed i po wyszukiwanej
Wyszukiwanie rekursywne
-
-r
- wyszukiwanie rekursywne
grep [[:alpha:]] -r katalog
Wyszukanie plików nie zawierających podanego ciągu znaków
Polecenie wyszukuje plików nie zawierających ciągu znaków All
. Polecenie rozpoznaje wielkość znaków.
grep -rL All . ./wiki/welcome.txt ./playground/playground.txt
Wyświetlenie wyrażenia pomiędzy dwoma patternami
Polecenie wyświetla zawartość pomiędzy -auth
a -background
znajdujące się w jednej linii
grep -o -P '(?<=-auth).*(?=-background)'
Usunięcie komentarzy z pliku
Polecenie usuwa wszystkie linie zaczynające się od znaku #
lub ;
.
more /etc/pf.conf | egrep -v '(#|;)' | grep '[a-z]'
Wyszukanie dwóch różnych wartości
Parametr -e
wyszukuje wszystkich linii w których występuje choć jeden z szukanych wyrażeń, jeśli
chcemy znaleźć linie w których występują wszystkie parametry trzeba użyć kilku poleceń grep
po
kolei np. grep pierwszy | grep drugi
pkg_info | grep -e "nmap" -e "ncftp' ncftp-3.2.2 ftp replacement with advanced user interface nmap-4.76 scan ports and fingerprint stack of network hosts
Wyświetlenie 2 linii po znalezionym ciągu znaków
Polecenie wyświetli w sumie 3 linie.
cat /var/log/messages | grep -A 2 -e "pid=767" grep -A 1 "nmbd" nazwa_pliku
Wyświetlenie 2 linii przed znalezionym ciągem znaków
Polecenie wyświetli w sumie 3 linie.
cat /var/log/messages | grep -B 2 -e "pid=767" grep -B 2 "pid=767" /var/log/messages
Szukamy słowa sshd w plikach znajdujących się w katalogu /etc
grep sshd /etc/* /etc/rc:if [ X"${sshd_flags}" != X"NO" ]; then /etc/rc: echo -n ' sshd'; /usr/sbin/sshd ${sshd_flags}; /etc/rc.conf:sshd_flags="" # for normal use: ""
Wyszukanie dokładnego ciągu znaków oddzielonego znakami spacji
Jeśli chcemy wyszukać np. słowo internet ale już nie internet6 możemy zastosować parametr -w
.
fstat | grep -w internet red sshd 5510 5* internet stream tcp 0xd4392e10 192.168.6.66:65535 <-- 192.168.6.77:4853 root sshd 10758 5* internet stream tcp 0xd4392e10 192.168.6.66:65535 <-- 192.168.6.77:4853 www httpd 8536 16* internet stream tcp 0xd4392640 *:443 www httpd 8536 17* internet stream tcp 0xd43927d0 *:80 www httpd 1085 16* internet stream tcp 0xd4392640 *:443 www httpd 1085 17* internet stream tcp 0xd43927d0 *:80 www httpd 25969 16* internet stream tcp 0xd4392640 *:443 www httpd 25969 17* internet stream tcp 0xd43927d0 *:80
Ten sam efekt uzyskamy za pomocą polecenia
fstat | grep "[[:space:]]internet[[:space:]]"
Również ten sam efekt da nam polecenie fstat i awk.
fstat | awk '$5 ~ /^internet$/'
Wyszukanie ciągu znaków w pliku
grep :1000: /etc/passwd red:*:1000:10:red:/home/red:/bin/ksh
Inne przykłady
Wyszukanie wzorca w pliku
grep pattern file
Case insensitive search (with line numbers)
grep -in pattern file
Recursively grep for string <pattern>
in folder:
grep -R pattern folder
Wyszukiwanie linii z wzorcami znajdującymi się w pliku (linia po linii)
grep -f pattern_file file
Wyszukiwanie linii nie zawierających wzorca
grep -v pattern file
Wyszukiwanie za pomocą wyrażenia regularnego
grep "^00" file #Match lines starting with 00 grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" file #Find IP add
Find all files which match {pattern} in {directory}
This will show: "file:line my research"
grep -rnw 'directory' -e "pattern"
Exclude grep from your grepped output of ps.
Add [] to the first letter. Ex: sshd → [s]shd
ps aux | grep '[h]ttpd'
Colour in red {bash} and keep all other lines
ps aux | grep -E --color 'bash|$'
Wyszukanie słowo w pliku plik.txt
Polecenie grep zawsze wyszukuje z rozróżnianiem wielkości liter
grep słowo plik.txt
Parametr -i wyłącza rozróżnianie wielkości liter
grep -i "słowo" plik.txt
Parametr -v wyświetla linie które nie zawierają słowa "słowo"
grep -v "słowo" plik.txt
Połączenie parametrów -v i -i wyświetli linie które nie zawierają szukanego słowa niezależnie od wielkości liter
grep -v -i "słowo" plik.txt
Wyszukanie dwóch słów jednocześnie z wykorzystaniem parametru -e
grep -i -e "słowo1" -e "słowo2" plik.txt
Użycie w tym przypadku parametru -i ma zastosowoanie do obu szukanych wyrazów
Zliczanie linii wystąpienia danego wyrazu
grep -i -c "wyraz" plik.txt
Należy zwrócić uwagę, że zostanie wyświetlona liczba linii w których wystąpi słowo nie liczba wystąpień słowa czyli linia, w której będzie szukane słowo więcej niż raz bedzie i tak zliczona jako jedno wystąpienie.
Wyszukiwanie dwóch lub więcej znaków
grep [1a] plik.txt
Wyszukiwanie linii które nie zawierają znaków
grep [^1] plik.txt
Wyszukiwanie linii zaczynających się od wzorca
grep ^początek plik.txt
Wyszukiwanie linii kończących się wzorcem
grep koniec$ plik.txt
Wyszukiwanie linii zawierających alfanumerycznych
grep [[:alnum:]] plik.txt
Wyszukiwanie linii zawierających znaki alfabetu
grep [[:alpha:]] plik.txt
Wyszukiwanie linii zawierających znaki kontrolne
grep [[:cntrl:]] plik.txt
Wyszukiwanie cyfr
grep [[:digit:]] plik.txt
Wyszukiwanie znaku graficznego
grep [[:graph:]] plik.txt
Wyszukiwanie małych znaków
grep [[:lower:]] plik.txt
Wyszukiwanie dowolnego znaku drukowanego
grep [[:print:]] plik.txt
Wyszukiwanie dowolnego znaku interpunkcyjnego
grep [[:punct:]] plik.txt
Wyszukiwanie dowolny znak biały (spacja, tabulator)
grep [[:space:]] plik.txt
Wyszukuje linie w których występują duże litery
grep [[:upper:]] plik.txt
Wyszukuje znaki zawierające liczby heksadecymalne
grep [[:xdigit:]] plik.txt
Podstawowe i rozszerzone wyrażenia regularne
Podstawowy |
Rozszerzony |
Znaczenie |
|
` |
` |
Suma logiczna lub |
|
|
Jedno powtórzenie lub więcej powtórzeń wyrażenia regularnego |
|
|
Zero powtórzeń lub jedno powtórzenie wyrażenia regularnego |
|
|
Dokładnie n powtórzeń wyrażenia regularnego |
|
|
n lub większa liczba powtórzeń wyrażenia regularnego |
|
|
Maska |
Znaczenie |
|
any on character |
|
match any number of previous (including 0) |
|
match any number of previous |
|
end of the line |
|
begining of the line |
|
any non-whitespace character |
|
any whitespace character |
|
optional |
|
any lowercase character |
|
any upercase character |
|
any letter |
|
any number |
|
escape sometihng |
Wyszukiwanie adresu URL
grep "https\?://\S*\.[A-Za-z]\+\S*" plik.html