Linux grep пустые строки

Как игнорировать пустые строки в Grep? — Подсказка по Linux

Grep означает Печать глобального регулярного выражения. Он имеет множество функций, например, поиск в файле, поиск только по именам файла, рекурсивный поиск grep и т. Д. Grep считается мощной командой в поисковом секторе. Во многих случаях мы сталкиваемся с ситуациями, когда нам не нужны пробелы или необходимо удалить нежелательные пробелы в наших данных. Один из наиболее интересных способов использования grep — игнорировать или удалять пустые строки из текстового файла. Эта процедура выполняется на разных примерах. Это операция редактирования файла. Для достижения этой цели нам необходимо иметь существующие файлы в нашей системе. С помощью команды grep мы разрешаем ему печатать данные без пустых строк.

Синтаксис

После использования grep возникает закономерность. Шаблон подразумевает то, как мы хотим использовать его для удаления лишнего места в данных. После шаблона описывается имя файла, через которое выполняется шаблон.

Предварительное условие

Чтобы понять полезность grep, нам нужно, чтобы в нашей системе был установлен Ubuntu. Предоставьте сведения о пользователе, указав имя пользователя и пароль для доступа к приложениям Linux. После входа в систему откройте приложение и найдите терминал или нажмите сочетание клавиш ctrl + alt + T.

Используя [: blank:] ключевое слово

Предположим, у нас есть файл с именем bfile с текстовым расширением. Вы можете создать файл либо в текстовом редакторе, либо с помощью командной строки в терминале. Чтобы создать файл на терминале, включая следующие команды.

$ Echo «вводимый текст в а файл ” > filename.txt

Нет необходимости создавать файл, если он уже существует. Просто отобразите его, используя добавленную команду:

Текст, записанный в этих файлах, содержит пробелы между ними, как показано на рисунке ниже.

Эти пустые строки можно удалить, используя пустую команду, чтобы игнорировать пустые пробелы между словами или строками.

$ egrep ‘^ [ [ :пустой ] ] * [ ^ [ :пустой: ] #] ’Bfile.txt

После применения запроса пробелы между строками будут удалены, и вывод больше не будет содержать лишних пробелов. Первое слово выделяется, поскольку пробелы между последним словом строки и между первыми словами следующей строки удаляются. Мы также можем применить условия к той же команде grep, добавив эту пустую функцию, чтобы удалить ненужное пространство в выводе.

Читайте также:  Альт линукс настройка ssh

Используя [: space:]

Здесь объясняется еще один пример игнорирования пробела.

Не говоря уже о расширении файла, мы сначала отобразим существующий файл с помощью команды.

Давайте посмотрим, как удаляется лишнее пространство с помощью команды grep помимо ключевого слова [: space:]. Параметр –v в Grep поможет напечатать строки без пустых строк и лишних интервалов, которые также включены в форму абзаца.

$ grep –V ‘^ [ [ ;пространство: ] ] * $ ’File20

Вы увидите, что лишние строки удаляются, а вывод идет в упорядоченном виде по строкам. Вот почему методология grep –v так помогает в достижении требуемой цели.

Упоминание расширений файлов ограничивает функциональность grep для работы только с определенными расширениями файлов, то есть .text или .mp3. Выполняя выравнивание текстового файла, мы возьмем fileg.txt в качестве образца файла. Сначала мы отобразим присутствующий в нем текст с помощью функции $ cat. Результат следующий:

Применив команду, мы получили наш выходной файл. Здесь мы можем видеть данные без интервала между строками, которые записываются последовательно.

$ grep –V ‘^ [ [ :пространство: ] ] * $ ’Fileg.txt

Помимо длинных команд, мы также можем использовать короткие письменные команды в Linux и Unix для реализации grep, поддерживающего в нем сокращенные символы.

Мы видели, как получается результат, применяя команды из входа. Здесь мы узнаем, как ввод сохраняется на выходе.

$ grep ‘\ S’ filename.txt > tmp.txt && мв tmp.txt имя_файла.txt

Здесь мы будем использовать временный текстовый файл с расширением текста с именем tmp.

Используя ^ #

Как и в других описанных примерах, мы применим команду к текстовому файлу с помощью команды cat. Мы также можем отображать текст с помощью команды echo.

Текстовый файл состоит из 4 строк, между которыми есть пробелы. Эти пробелы легко удаляются с помощью определенной команды.

Регулярные расширенные операции включаются параметром –E, который разрешает все регулярные выражения, особенно pipe. Канал используется как необязательное условие «или» в любом шаблоне. «^ #». Это показывает соответствие текстовых строк в файле, который начинается со знака #. «^ $» Будет соответствовать всем свободным пробелам в тексте или пустым строкам.

Вывод показывает полное удаление лишнего пробела между строками в файле данных. В этом примере мы видели, что в команде сначала идет «^ #», что означает, что текст сопоставляется первым. «^ $» Идет после | оператор, поэтому свободное пространство будет сопоставлено позже.

Используя ^ $

Как и в примере, упомянутом выше, мы получим те же результаты, потому что команда почти такая же. Однако картина написана наоборот. File22.txt — это файл, который мы собираемся использовать для удаления пробелов.

Читайте также:  Dvd rom драйвера linux

Применяется та же методика, за исключением приоритетной работы. В соответствии с этой командой сначала будут сопоставлены свободные места, затем сопоставлены текстовые файлы. На выходе вы получите последовательность строк, удалив в них лишние пробелы.

Другие простые команды

Они оба настолько просты и помогают устранить пробелы в текстовых строках.

Вывод

Удаление бесполезных пробелов в файлах с помощью регулярных выражений — довольно простой способ добиться плавной последовательности данных и поддерживать согласованность. Примеры подробно объяснены, чтобы улучшить вашу информацию по теме.

Источник

grep

Изображение баннера

-v, —invert-match
Invert the sense of matching, to select non-matching lines.

По умолчанию я предполагаю, что Вы работаете в Bash под Windows 10 или в Bash в Linux .

Основные команды grep

Вывести все упоминания слова

Предположим вы запустили CentOS Linux и хотите посмотреть все установленные пакеты в названии которых есть слово kernel

yum list installed | grep kernel

abrt-addon-kerneloops.x86_64 2.1.11-60.el7.centos @base kernel.x86_64 3.10.0-1160.el7 @anaconda kernel.x86_64 3.10.0-1160.2.2.el7 @updates kernel.x86_64 3.10.0-1160.6.1.el7 @updates kernel-devel.x86_64 3.10.0-1160.2.2.el7 @updates kernel-devel.x86_64 3.10.0-1160.6.1.el7 @updates kernel-headers.x86_64 3.10.0-1160.6.1.el7 @updates kernel-tools.x86_64 3.10.0-1160.6.1.el7 @updates kernel-tools-libs.x86_64 3.10.0-1160.6.1.el7 @updates

И наоборот, можно посмотреть все строки где нет слова kernel : нужно добавить опцию -v

yum list installed | grep -v kernel

Если вам нужно найти что-то в файле, можно вместо | воспользоваться выражением

grep образец путь_до_файла

# Use public server s from the pool.ntp.org project. server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst #broadcast 192.168.1.255 autokey # broadcast server #broadcast 224.0.1.1 autokey # multicast server #manycast server 239.255.254.254 # manycast server

grep ‘ \b kernel \b ‘ huge_file

Где \b это word boundary — границы слова

huge_file это имя файла в текущей директории в котором мы ищем отдельные слова kernel.

То есть слова akernel или kernelz найдены не будут

Вывести всё, что начинается со слова

Если нам теперь не нужны пакеты, в которых слово kernel в середине, а только те, которые начинаются с kernel добавим перед словом знак ^

yum list installed | grep ^kernel

kernel.x86_64 3.10.0-1160.el7 @anaconda kernel.x86_64 3.10.0-1160.2.2.el7 @updates kernel.x86_64 3.10.0-1160.6.1.el7 @updates kernel-devel.x86_64 3.10.0-1160.2.2.el7 @updates kernel-devel.x86_64 3.10.0-1160.6.1.el7 @updates kernel-headers.x86_64 3.10.0-1160.6.1.el7 @updates kernel-tools.x86_64 3.10.0-1160.6.1.el7 @updates kernel-tools-libs.x86_64 3.10.0-1160.6.1.el7 @updates

Вывести всё, что заканчивается на определённый набор символов

Для работы со следующими примерами установите words

sudo yum -y install words
cp /usr/share/dict/words huge_file

… Cynoscion cytodifferentiation Czechization dactylion Daedalion …

Читайте также:  Format usb mint linux

Найти слова по первым и последним буквам

Допустим вы знаете только начало и конец слова

… handed hanged hanked hanted happed harked …

Несколько символов подряд

Найти слова с пятью гласными подряд

grep -E ‘[aeiou]’ /usr/share/dict/words

cadiueio Chaouia cooeeing euouae Guauaenok miaoued miaouing Pauiie queueing

Поиск из вывода функции

Нужно сперва вызвать функцию со всеми флагами, затем поставить pipe и сделать grep

Например из файла today.log можно выделить все строки с ошибками

Поиск из вывода функции по нескольким словам

Например, нужно из top выцепить сразу несколько процессов:

top | grep ‘process1\|process2\|process3’

Сколько раз слово использовано в тексте

Начнём с простого примера: слово встречается в строке только один раз.

Например, лог работы сервера содериж строки вида

2023-07-15-07-07-40-ERROR: Something is NOK

Нужно вычислить сколько ошибок зафиксированно в лог файле 2023-07-15-log.txt

grep -o -i ERROR 2023-07-15-log.txt | wc -l

Если вы хотите использовать эту команду в скрипте — рекомендую статью Вывод команды в переменную в bash скрипте

Найти пустые/не пустые строки

Найти все пустые строки в файле ntp.conf

Найти все не пустые строки в файле ntp.conf

grep -E

С некоторыми задачами обычный grep не справляется, поэтому нужен расширеный режим.

Найти в файле file все foobar или foo bar с ровно одним пробелом

Найти в файле file все foobar или foo bar с ровно двумя пробелами

Более сложный пример. Сотрудникам TopBicycle нужно понять у каких велосипедов в списке отсутствует или неправильно записан порядковый номер.

Номер должен быть в формате 111-11-1111 то есть три цифры дефис две цифры дефис четыре цифры

Merida,BigNine,,
Stark,Cobra,xxx-xx-xxx
Forward,Tracer,1234-0
Helkama,Jopo,,

Stels,Pilot,111-22-3333
Author,Grand,444-55-6666
Stels,Pilot21,111-22-3344
Giant,Lannister,555-66-7777

grep -n

Флаг -n показывает номера строк.

Рассмотрим файл partners.csv со списком сайтов

Если выполнить поиск по какому-то слову без флагов, например

cat partners.csv | grep Hosting

Получим строки без номеров

Теперь то же самое но с -n

cat partners.csv | grep -n Hosting

Слева появились номера строк

grep -m

Флаг -m задает верхний предел по количеству

Если вам нужны не все результаты а только один — используйте

Рассмотрим файл partners.csv со списком сайтов

URN.SU;https://urn.su; IT ETH1.RU;https://eth1.ru; IT Aredel.com;https://aredel.com; IT DevhOps.ru;https://devhops.ru; IT

Если нужно только два первых результата

URN.SU;https://urn.su; IT ETH1.RU;https://eth1.ru; IT

Логические операторы

Задача: показать только сегодняшние ERROR и WARNING строки из лога а также те, где присутствует слово panic

Для этого пригодится условие ИЛИ, которое можно использовать в расширенном режиме.

grep ‘2023-07-15’ topbicycle.log | grep -E ‘ERROR|WARNING|*panic*’

Источник

Оцените статью
Adblock
detector