Как может я grep определенный текст и отображать его строку и строку после также

Сначала необходимо знать различия между Виртуальными файловыми системами, и Физические Файловые системы (проверьте Google).

proc, sysfs, tmpfs,devpts, sun_rpc и gvfs-fuse-daemon Виртуальные файловые системы.

/dev/sda1 и/dev/sda3 являются устройствами хранения данных: физические файловые системы.

proc: proc Виртуальные файловые системы для управления процессами, Вы видите каждый PID, и другой снабжает.

sysfs: другая Виртуальная файловая система, управляемая ядром; это помогает proc, хотя не в PIDs но в аппаратных средствах и другой снабжает.

/dev/pts : на GNU/Linux у Вас есть виртуальные терминалы и реальные терминалы для реальных терминалов, через которые можно получить доступ: /dev/tty1, /dev/tty2, /dev/tty2 swtich через CTRL+ALT+F1..8 Но для виртуальных терминалов, Вы имеете /dev/pts/ каталог, это содержит /dev/pts/0, 1, 2 и так далее каждая цифра для одного виртуального терминала.

/dev/shm : отметка курса корабля является сокращением Общей памяти, это - место обмена данными.

RPC : Вызов удаленной процедуры.

tmpfs : Когда пространство потребностей ядра для каждой задачи, смонтируйте, что это вводит. Такой как /tmp

Примечание: Сначала, читайте о Виртуальных файловых системах, затем считанных о монтировании.

3
24.10.2014, 14:12
2 ответа

Утилиты GNU и BSD grep имеют опцию -A для строк после совпадений и опцию -B для строк до совпадений. Таким образом, можно сделать что-то вроде:

$ grep -A 1 bcd myfile
abcdef
123

-показывать линию после матча и

$ grep -B 1 ifl myfile
123
ghiflk

-показывать линию перед матчем. Наконец, вы можете использовать -C для показа N строк до и после матча:

$ grep -C 1 ifl myfile
123
ghiflk
234

Если ваша версия grep не поддерживает эту возможность, вы всегда можете попробовать другие методы:

  • используя опции POSIX grep и sed вместе с shell:

    n=$(grep -n bcd foo | cut -d':' -f1); sed -n "${n},$((n + 1))p" myfile
    
  • Используя AWK

    awk '/bcd/ {печать; getline; print}' мой файл.
    

И многое другое.

12
27.01.2020, 21:07

Помимо вариантов, упомянутых Стивеном Д, GNU grep принимает (недокументированный) вариант -n, который определяет количество строк, которые нужно вывести до и после совпадающей строки. Конечно, использование опции -n включает нумерацию строк, поэтому опции -A и -B лучше, если вам не нужна нумерация строк.

Eg, grep -n1 pattern ведет себя как grep -n -A1 -B1 pattern


Как упоминает don_crissti в комментариях, на самом деле -n это не недокументированный аргумент в пользу опции -n. -NUM (где -NUM - целое число) на самом деле является синонимом опции -C NUM, поэтому -nNUM на самом деле является сокращением -n -C NUM.

5
27.01.2020, 21:07

Теги

Похожие вопросы