Grep start: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 70: | Строка 70: | ||
if [ "x${GRUB_INIT_TUNE}" != "x" ] ; then | if [ "x${GRUB_INIT_TUNE}" != "x" ] ; then | ||
if [ "x${GRUB_BADRAM}" != "x" ] ; then | if [ "x${GRUB_BADRAM}" != "x" ] ; then | ||
==Использование с командой== | |||
Вы можете фильтровать не только содержимое файла, но и вывод команд. | |||
Например: | |||
$ ls | grep "local" | |||
locale.conf | |||
local-policy | |||
local-policy-system | |||
localtime | |||
==Вывод контекста== | |||
Иногда, для отладки нужно вывести содержимое до выводимой строки или после. | |||
===N строк после=== | |||
$ grep -AN "слово" | |||
Пример: | |||
$ grep -A4 "error" /var/log/Xorg.0.log | |||
(WW) warning, (EE) error, (NI) not implemented, (??) unknown. | |||
[ 7.519] (==) Log file: "/var/log/Xorg.0.log", Time: Tue Nov 5 11:17:11 2024 | |||
[ 7.520] (==) Using config directory: "/etc/X11/xorg.conf.d" | |||
[ 7.520] (==) Using system config directory "/usr/share/X11/xorg.conf.d" | |||
[ 7.526] (==) No Layout section. Using the first Screen section. | |||
===N строк до=== | |||
$ grep -BN "слово" | |||
Пример: | |||
$ grep -B4 "error" /var/log/Xorg.0.log | |||
[ 7.519] Before reporting problems, check http://wiki.x.org | |||
to make sure that you have the latest version. | |||
[ 7.519] Markers: (--) probed, (**) from config file, (==) default setting, | |||
(++) from command line, (!!) notice, (II) informational, | |||
(WW) warning, (EE) error, (NI) not implemented, (??) unknown. | |||
===N строк до и после=== | |||
$ grep -CN "слово" | |||
Пример: | |||
$ grep -C4 "error" /var/log/Xorg.0.log | |||
[ 7.519] Before reporting problems, check http://wiki.x.org | |||
to make sure that you have the latest version. | |||
[ 7.519] Markers: (--) probed, (**) from config file, (==) default setting, | |||
(++) from command line, (!!) notice, (II) informational, | |||
(WW) warning, (EE) error, (NI) not implemented, (??) unknown. | |||
[ 7.519] (==) Log file: "/var/log/Xorg.0.log", Time: Tue Nov 5 11:17:11 2024 | |||
[ 7.520] (==) Using config directory: "/etc/X11/xorg.conf.d" | |||
[ 7.520] (==) Using system config directory "/usr/share/X11/xorg.conf.d" | |||
[ 7.526] (==) No Layout section. Using the first Screen section. | |||
==Рекрусивный поиск в нескольких файлах/каталогах== | |||
$ grep -r "слово" путь | |||
Пример: | |||
$ grep -r "Kernel" /var/log | |||
/var/log/Xorg.0.log.old:[ 22935.893] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-un-def root=UUID=db192b56-b670-4975-aad7-121f147d01a7 ro quiet panic=30 splash psi=1 | |||
... | |||
/var/log/journald:сен 05 19:18:36 comp-alt-petr systemd[1]: Stopped Apply Kernel Variables. | |||
... | |||
/var/log/Xorg.0.log:[ 7.518] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-un-def root=UUID=db192b56-b670-4975-aad7-121f147d01a7 ro quiet panic=30 splash psi=1 | |||
==Выбор расширений файлов для поиска== | |||
С помощью опций --include и --exclude вы можете фильтровать файлы, которые будут принимать участие в поиске. | |||
Например: | |||
$ grep --include="*.расширение" "слово" путь | |||
Пример: | |||
# grep -r --include="*.log" "Kernel" /var/log | |||
==Поиск слов== | |||
Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить утилиту искать по содержимому файлов в Linux строки, которые включают только искомые слова полностью с помощью опции -w. Например: | |||
$ grep -w "root" /etc/passwd | |||
Вывод: | |||
root:x:0:0:System Administrator:/root:/bin/bash | |||
==Вывод количества строк== | |||
$ grep -c 'слово' путь | |||
Пример: | |||
$ grep -c 'null' /etc/passwd | |||
57 | |||
==Инвертированный поиск== | |||
Поиск строк не содержащих указанное слово: | |||
$ grep -v слово путь | |||
Пример: | |||
$ grep -v root /etc/passwd | |||
bin:x:1:1:bin:/:/dev/null | |||
daemon:x:2:2:daemon:/:/dev/null | |||
... | |||
fwupd-refresh:x:433:433:Firmware update daemon:/var/lib/fwupd:/sbin/nologin | |||
_kdesu5:x:463:431:KDE SU wrapper:/var/lib/_kdesu5:/sbin/nologin | |||
==Вывод имен файлов== | |||
Вывести только имена файлов содержащие слово: | |||
$ grep -l "слово" путь | |||
Пример: | |||
$ grep -lr 'Kernel' /var/log/ | |||
Вывод: | |||
/var/log/Xorg.0.log.old | |||
/var/log/journald | |||
/var/log/Xorg.2.log.old | |||
/var/log/journal/19866df1846df91fb2c5fc9e6464e8ac/system@1eac3e06acd346b5854c3e7761cae966-0000000000000001-000607d1add53565.journal | |||
... | |||
/var/log/journal/19866df1846df91fb2c5fc9e6464e8ac/system.journal | |||
/var/log/journal/19866df1846df91fb2c5fc9e6464e8ac/user-500@c51e84cdf9ea4cb2b1fda02f5ed8e50d-000000000018d3ee-00062319f006cafc.journal | |||
/var/log/Xorg.0.log | |||
/var/log/Xorg.2.log | |||
{{Category navigation|title=Начинающему системному администратору|category=Начинающему системному администратору|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Начинающему системному администратору|category=Начинающему системному администратору|sortkey={{SUBPAGENAME}}}} | ||
[https://losst.pro/gerp-poisk-vnutri-fajlov-v-linux Источник] | [https://losst.pro/gerp-poisk-vnutri-fajlov-v-linux Источник] |
Версия от 13:38, 5 ноября 2024
Предположим, у нас есть данные:
$ cat /etc/passwd root:x:0:0:System Administrator:/root:/bin/bash bin:x:1:1:bin:/:/dev/null daemon:x:2:2:daemon:/:/dev/null adm:x:3:4:adm:/var/adm:/dev/null lp:x:4:7:lp:/var/spool/lpd:/dev/null mail:x:8:12:mail:/var/spool/mail:/dev/null news:x:9:13:news:/var/spool/news:/dev/null <...>
Для того чтобы "подставить" определенные значения в команду можно использовать команду grep. И в этой статье будет описана попытка объяснить данную утилиту для новичков.
Вывести строки, содержащие следующие символы
| grep слово
Пример:
$ cat /etc/passwd | grep root
Вывод:
root:x:0:0:System Administrator:/root:/bin/bash
Вывести строки независимо от регистра
grep -i "слово"
Пример:
$ grep -i "service" /etc/nsswitch.conf
Вывод:
# This is the Name Service Switch configuration file. This file should # should stop if the search with the previous service turned up nothing. # server responding) then the search continues with the next service. # Legal name services are: # dns Use DNS (Domain Name Service) services: files #services: nisplus [NOTFOUND=return] files
Шаблоны для поиска
Указав шаблоны, вы можете отфильтровать поиск по конкретным словам:
grep -e "слово1" -e "слово2"
Пример:
$ grep -e "petr" -e "root" /etc/passwd
Вывод:
root:x:0:0:System Administrator:/root:/bin/bash petr:x:500:500::/home/petr:/bin/bash petr_a:x:501:501:1st hasher satellite for petr:/dev/null:/dev/null petr_b:x:502:502:2nd hasher satellite for petr:/dev/null:/dev/null
Указание номера строки
Указав следующий параметр, в выводе вы получите номер строки, содержащий по фильтру символ.
grep -n 'слово'
Пример:
$ grep -n petr /etc/passwd
Вывод:
55:petr:x:500:500::/home/petr:/bin/bash 57:petr_a:x:501:501:1st hasher satellite for petr:/dev/null:/dev/null 58:petr_b:x:502:502:2nd hasher satellite for petr:/dev/null:/dev/null
Указание строки с символом, который например может использоваться bash
grep -F "символ"
Пример:
$ grep -F "[" /etc/grub.d/00_header
Вывод:
if [ "x${GRUB_DEFAULT}" = "x" ] ; then GRUB_DEFAULT=0 ; fi if [ "x${GRUB_DEFAULT}" = "xsaved" ] ; then GRUB_DEFAULT='${saved_entry}' ; fi if [ "x${GRUB_TIMEOUT}" = "x" ] ; then GRUB_TIMEOUT=5 ; fi <...> if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ] && [ "x$GRUB_BUTTON_CMOS_CLEAN" = "xyes" ]; then if [ "x${GRUB_INIT_TUNE}" != "x" ] ; then if [ "x${GRUB_BADRAM}" != "x" ] ; then
Использование с командой
Вы можете фильтровать не только содержимое файла, но и вывод команд.
Например:
$ ls | grep "local" locale.conf local-policy local-policy-system localtime
Вывод контекста
Иногда, для отладки нужно вывести содержимое до выводимой строки или после.
N строк после
$ grep -AN "слово"
Пример:
$ grep -A4 "error" /var/log/Xorg.0.log (WW) warning, (EE) error, (NI) not implemented, (??) unknown. [ 7.519] (==) Log file: "/var/log/Xorg.0.log", Time: Tue Nov 5 11:17:11 2024 [ 7.520] (==) Using config directory: "/etc/X11/xorg.conf.d" [ 7.520] (==) Using system config directory "/usr/share/X11/xorg.conf.d" [ 7.526] (==) No Layout section. Using the first Screen section.
N строк до
$ grep -BN "слово"
Пример:
$ grep -B4 "error" /var/log/Xorg.0.log [ 7.519] Before reporting problems, check http://wiki.x.org to make sure that you have the latest version. [ 7.519] Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
N строк до и после
$ grep -CN "слово"
Пример:
$ grep -C4 "error" /var/log/Xorg.0.log [ 7.519] Before reporting problems, check http://wiki.x.org to make sure that you have the latest version. [ 7.519] Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown. [ 7.519] (==) Log file: "/var/log/Xorg.0.log", Time: Tue Nov 5 11:17:11 2024 [ 7.520] (==) Using config directory: "/etc/X11/xorg.conf.d" [ 7.520] (==) Using system config directory "/usr/share/X11/xorg.conf.d" [ 7.526] (==) No Layout section. Using the first Screen section.
Рекрусивный поиск в нескольких файлах/каталогах
$ grep -r "слово" путь
Пример:
$ grep -r "Kernel" /var/log /var/log/Xorg.0.log.old:[ 22935.893] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-un-def root=UUID=db192b56-b670-4975-aad7-121f147d01a7 ro quiet panic=30 splash psi=1 ... /var/log/journald:сен 05 19:18:36 comp-alt-petr systemd[1]: Stopped Apply Kernel Variables. ... /var/log/Xorg.0.log:[ 7.518] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-un-def root=UUID=db192b56-b670-4975-aad7-121f147d01a7 ro quiet panic=30 splash psi=1
Выбор расширений файлов для поиска
С помощью опций --include и --exclude вы можете фильтровать файлы, которые будут принимать участие в поиске.
Например:
$ grep --include="*.расширение" "слово" путь
Пример:
# grep -r --include="*.log" "Kernel" /var/log
Поиск слов
Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить утилиту искать по содержимому файлов в Linux строки, которые включают только искомые слова полностью с помощью опции -w. Например:
$ grep -w "root" /etc/passwd
Вывод:
root:x:0:0:System Administrator:/root:/bin/bash
Вывод количества строк
$ grep -c 'слово' путь
Пример:
$ grep -c 'null' /etc/passwd 57
Инвертированный поиск
Поиск строк не содержащих указанное слово:
$ grep -v слово путь
Пример:
$ grep -v root /etc/passwd bin:x:1:1:bin:/:/dev/null daemon:x:2:2:daemon:/:/dev/null ... fwupd-refresh:x:433:433:Firmware update daemon:/var/lib/fwupd:/sbin/nologin _kdesu5:x:463:431:KDE SU wrapper:/var/lib/_kdesu5:/sbin/nologin
Вывод имен файлов
Вывести только имена файлов содержащие слово:
$ grep -l "слово" путь
Пример:
$ grep -lr 'Kernel' /var/log/
Вывод:
/var/log/Xorg.0.log.old /var/log/journald /var/log/Xorg.2.log.old /var/log/journal/19866df1846df91fb2c5fc9e6464e8ac/system@1eac3e06acd346b5854c3e7761cae966-0000000000000001-000607d1add53565.journal ... /var/log/journal/19866df1846df91fb2c5fc9e6464e8ac/system.journal /var/log/journal/19866df1846df91fb2c5fc9e6464e8ac/user-500@c51e84cdf9ea4cb2b1fda02f5ed8e50d-000000000018d3ee-00062319f006cafc.journal /var/log/Xorg.0.log /var/log/Xorg.2.log