Удалить пустые строки linux

Обновлено: 25.06.2024

Иногда вам может понадобиться удалить пустые строки из файла в Linux. Это можно сделать разными способами, но в этой статье мы перечислили пять лучших способов.

Вы уже знаете команды grep, awk и sed, которые специализируются на манипулировании текстовыми данными, и мы будем использовать эту команду для удаления пустых строк в Linux.

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

В этом руководстве мы увидим, как удалить пустые строки из файла в Linux, используя следующие пять методов.

  • Команда sed: потоковый редактор для фильтрации и преобразования текста.
  • Команда grep: вывести строки, соответствующие шаблону.
  • Команда cat: объединяет файлы и печатает на стандартном выходе.
  • Команда tr: перевод или удаление символов.
  • Команда awk: Утилита awk должна выполнять программы, написанные на языке программирования awk, специализированном для манипулирования текстовыми данными.
  • Команда perl: Perl – это язык программирования, специально разработанный для редактирования текста.

Чтобы доказать это, я уже создал файл 2daygeek.txt с некоторыми текстами и пустыми строками, которые показаны ниже:

Теперь, когда все предварительные условия выполнены, мы проверим это несколькими способами.

1) Удаление пустых строк из файла с помощью команды sed

sed — это потоковый редактор, используемый для выполнения основных преобразований текста, который также можно использовать для удаления пустых строк из файла, как показано ниже:

Удаление пустых строк из файла в Linux

Подробности ниже:

  • sed: это команда
  • //: Содержит искомую строку.
  • ^: соответствует началу строки.
  • $: соответствует концу строки.
  • d: удалить совпавшую строку.
  • 2daygeek.txt: имя исходного файла.

2) Удаление пустых строк из файла с помощью команды grep

grep расшифровывается как Global Regular Expression Print. Он используется для поиска текста и строк в заданном файле и печатает каждую строку, соответствующую шаблону.

Подробности ниже:

  • grep: это команда
  • .: Заменяет любой символ.
  • ^: соответствует началу строки.
  • $: соответствует концу строки.
  • E: для расширенного сопоставления шаблонов регулярных выражений.
  • e: для сопоставления шаблонов регулярных выражений.
  • v: выбор несовпадающих строк из файла.
  • 2daygeek.txt: имя исходного файла.

3) Удаление пустых строк из файла в Linux с помощью команды awk

Awk — это язык сценариев общего назначения, предназначенный для расширенной обработки текстовых данных. В основном он используется для обработки текста, создания отчетов и анализа.

Подробности ниже:

  • awk: это команда
  • //: Содержит искомую строку.
  • ^: соответствует началу строки.
  • $: соответствует концу строки.
  • .: Заменяет любой символ.
  • !: удалить совпавшую строку.
  • 2daygeek.txt: имя исходного файла.

4) Удалить пустые строки из файла с помощью команды cat и tr

кошка означает конкатенацию. Он очень часто используется в Linux для чтения данных из файла.

cat — одна из наиболее часто используемых команд в Unix-подобных операционных системах. Он предлагает три функции, связанные с текстовым файлом, такие как отображение содержимого файла, объединение нескольких файлов в один вывод и создание нового файла.

Мы можем легко удалить пустые строки в файле, комбинируя команды «cat» и «tr», как показано ниже:

Подробности ниже:

  • кот: Это команда
  • tr: ​​это команда
  • |: символ трубы. Он передает первый вывод команды в качестве входных данных для другой команды.
  • s: заменить каждую последовательность повторяющихся символов, которая указана в последнем указанном наборе.
  • \n: добавить новую строку.
  • 2daygeek.txt: имя исходного файла.

5) Удалить пустые строки из файла в Linux с помощью команды perl

Perl расшифровывается как «Практический язык извлечения и составления отчетов». Perl — это язык программирования, специально разработанный для редактирования текста. В настоящее время он широко используется для различных целей, включая системное администрирование Linux, сетевое программирование, веб-разработку и т. д.

Подробности ниже:

  • grep: это команда
  • .: Заменяет любой символ.
  • ^: соответствует началу строки.
  • $: соответствует концу строки.
  • E: для расширенного сопоставления шаблонов регулярных выражений.
  • e: для сопоставления шаблонов регулярных выражений.
  • v: выбор несовпадающих строк из файла.
  • 2daygeek.txt: имя исходного файла.

Заключительные примечания

В этом руководстве мы показали, как удалить пустые/пустые строки из файла в Linux.

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

Я использовал CentOS 8 в демонстрационных целях.

Удалить пустые строки с помощью команды grep

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

При использовании с параметром -v команда grep помогает удалить пустые строки. Ниже приведен пример текстового файла sample.txt с альтернативными непустыми и пустыми строками.


Чтобы удалить или удалить все пустые строки в образце текстового файла, используйте команду grep, как показано ниже.


Кроме того, вы можете использовать следующий синтаксис.

Кроме того, вы можете сохранить или перенаправить вывод в другой файл, например, с помощью оператора "больше" ( > ).


Удалить пустые строки с помощью команды sed

Команда Linux sed, сокращенно называемая редактором потока, является популярным инструментом, выполняющим широкий спектр функций, включая замену и подстановку строк в файле.

Кроме того, вы также можете использовать sed для удаления пустых строк в файле, как показано ниже.


Удалить пустые строки с помощью команды awk

Наконец, у нас есть команда awk. Это еще один инструмент командной строки для манипуляций с тетами, который также может избавиться от пустых строк. Чтобы удалить пустой файл с помощью awk, вызовите приведенную ниже команду.


Заключение

Мы предоставили 3 способа удаления пустых строк в текстовых файлах. Любые другие идеи о том, как удалить эти ненужные пустые строки? Свяжитесь с нами в разделе комментариев.

Об авторе

Карим Буздар

Карим Буздар имеет степень инженера в области телекоммуникаций и несколько сертификатов системного администратора. Как ИТ-инженер и технический автор, он пишет для различных веб-сайтов. Он ведет блог на LinuxWays.

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

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

Создание файла с пустыми/пустыми строками в Linux

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

 Создать файл с пустыми строками

Создать файл с пустыми строками

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

 Просмотр содержимого файла в Linux

Просмотр содержимого файла в Linux

Три команды Linux, которые подтолкнут нас к идеальному решению этой проблемы с пустыми/пустыми строками, — это grep, sed и awk.

Поэтому создайте три копии файла i_have_blanks.txt и сохраните их под разными именами, чтобы каждая из них могла быть обработана одной из трех указанных команд Linux.

С помощью регулярного выражения (регулярных выражений) мы можем идентифицировать пустые строки с помощью стандартного символа POSIX «[:space:]».

Как удалить пустые/пустые строки в файлах

С этой постановкой задачи мы рассматриваем удаление всех существующих пустых/пустых строк из заданного читаемого файла с помощью следующих команд.

1. Удалить пустые строки с помощью команды Grep

Поддерживаемое использование сокращенных классов символов может упростить команду grep до простой, например:

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

Удалить пустые строки в файле с помощью Grep

Удаление пустых строк в файле с помощью Grep

Как видите, все пустые строки, разделявшие содержимое этого текстового файла, исчезли.

2. Удалить пустые строки с помощью команды Sed

Действие d в команде указывает удалить все существующие пробелы из файла. Механизм сопоставления и удаления пустых строк этой команды можно представить следующим образом.

Приведенная выше команда просматривает строки текстового файла в поисках непустых символов и удаляет все остальные оставшиеся символы. Благодаря поддержке класса непустых символов приведенную выше команду можно упростить до следующего:

Кроме того, поскольку команда поддерживает редактирование на месте, нам не нужен временный файл для временного хранения преобразованного файла перед перезаписью исходного текстового файла, как в случае с командой grep. Однако вам нужно использовать эту команду с параметром -i в качестве аргумента.

Удалить пустые строки в файле с помощью Sed

Удаление пустых строк в файле с помощью Sed

3. Удалить пустые строки с помощью команды Awk

Команда awk выполняет проверку небелых символов в каждой строке файла и печатает их только в том случае, если это условие выполняется. Гибкость этой команды обеспечивается различными путями реализации. Его простое решение выглядит следующим образом:

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

Благодаря поддержке класса непустых символов в awk приведенная выше команда также может быть представлена ​​следующим образом:

Удалить пустые строки в файле с помощью Awk

Удаление пустых строк в файле с помощью Awk

Опция -d an позволяет awk вывести последние строки файла на системный терминал. Как видите, в файле больше нет пробелов.

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

Снимок экрана с параметрами удаления пустых строк в текстовом редакторе UltraEdit

Эти параметры работают следующим образом:

Удалить все пустые строки

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

Удалить все пустые строки и строки, содержащие только пробелы

Это удалит все строки в файле, которые не содержат символов, отличных от пробелов. Это означает, что строки, не содержащие буквально ничего, удаляются так же, как строки, содержащие только пробелы и/или знаки табуляции. Опять же, если выделен текст, эта операция ограничивается только выделенным текстом.

Но у меня нет этой версии (или я просто люблю все усложнять). Как мне удалить все пустые строки?

Что найти: "^(?:[\t ]*(?:\r?\n|\r))+" (без кавычек)
Заменить на: "" (без кавычек - то есть ничего).


Примечание. Нажмите Заменить все один раз, чтобы заменить все (даже последовательные) пустые строки в текстовом файле.

Я использую еще более старую версию, которая не поддерживает регулярные выражения Perl. у вас есть решение для меня?

Мы упоминали, что вам следует действительно подумать об обновлении? В любом случае, если вы используете предыдущую версию UltraEdit, которая не поддерживает регулярные выражения Perl, для удаления пустых строк вы можете использовать замену регулярного выражения следующим образом. Вам нужно будет проверить параметр «Регулярные выражения» в диалоговом окне «Заменить».

Найти что: "%[^t ]++[^r^n]+" (без кавычек)
Заменить на: "" (без кавычек - т.е. ничего).


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

Читайте также: