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

Remove blank lines with grep

The single quotes around ^$ makes it work for Cshell. Other shells will be happy with either single or double quotes.

UPDATE: This works for me for a file with blank lines or «all white space» (such as windows lines with \r\n style line endings), whereas the above only removes files with blank lines and unix style line endings:

That egrep would only work for files with zero or 1 space on the line, not for files with 2 or more spaces. Change ? to *.

grep -v -e ‘^[[:space:]]*$’ -e ‘^#’ file will give you all non-blank, non-comment lines in a script or config file (or any file type that uses the hash character for comments).

«The -e option allows regex patterns for matching.» That is very misleading. -e is a (POSIX-)definition for: This can be used to specify multiple search patterns, or to protect a pattern beginning with a hyphen (-). (from the manual). Grep already expects a (basic) regular expression by default. For this pattern, you may leave out -e entirely: grep -v ‘^[[:space:]]*$’ foo.txt .

If you’re dealing with files that might have windows-style CR+LF line breaks but don’t want to also exclude lines with other whitespace, then use this regex: ‘^[[:cnrl:]]?$’ .

This works for me on files from a linux based system but not on files from Windows. Presumably because of Windows line-ending characters.

I’m upvoting this even though it doesn’t quite solve the OP’s problem of handling a file with Windows line endings, but since I don’t have that issue, this turned out to be the perfect solution for me.

$ dos2unix file $ grep -v "^$" file 

If you don’t have dos2unix, then you can use tools like tr:

Good point about converting to UNIX-style line endings otherwise regular expressions may not work as expected. Nothing here worked for me until I converted the line endings.

grep -v "^[[:space:]]*$" The -v makes it print lines that do not completely match ===Each part explained=== ^ match start of line [[:space:]] match whitespace- spaces, tabs, carriage returns, etc. * previous match (whitespace) may exist from 0 to infinite times $ match end of line 
$ echo " > hello > > ok" | > grep -v "^[[:space:]]*$" hello ok 

To understand more about how/why this works, I recommend reading up on regular expressions. http://www.regular-expressions.info/tutorial.html

Читайте также:  Средства обеспечения защиты ос linux

How and why does this work? Your answer would be much better if you could explain. For instance your regular expression matches the beginning of the string then one or more spaces using the POSIX standard then the end of the string, i.e. with grep -v it removes all lines that are only spaces. Right? What happens if there are no spaces; it’s simply a newline character?

As my example shows, even only an empty line is removed (the first line). I added more information, so hopefully that helps. 🙂

If you have sequences of multiple blank lines in a row, and would like only one blank line per sequence, try

grep -v "unwantedThing" foo.txt | cat -s 

cat -s suppresses repeated empty output lines.

Your output would go from

The three blank lines in the original output would be compressed or «squeezed» into one blank line.

The same as the previous answers:

Here, grep -e means the extended version of grep. ‘^$’ means that there isn’t any character between ^(Start of line) and $(end of line). ‘^’ and ‘$’ are regex characters.

So the command grep -v will print all the lines that do not match this pattern (No characters between ^ and $).

This way, empty blank lines are eliminated.

-e does not mean «the extended version of grep», maybe you are confused with -E ? The manual clearly says that -e just explicitly says that a pattern follows. Since the pattern does not start with a dash, and you are only defining one pattern anyway, you might as well leave it out as by default grep expects one regex pattern: grep -v ‘^$’ foo.txt (no need for extended regex functionality). Also it is worth mentioning that this does not eliminate the blank lines in the file, only that which is piped through the output. For that case, sed -i would be the right tool.

Do lines in the file have whitespace characters?

I prefer using egrep , though in my test with a genuine file with blank line your approach worked fine (though without quotation marks in my test). This worked too:

This code removes blank lines and lines that start with «#»

 grep -v "^#" file.txt | grep -v ^[[:space:]]*$ 

Источник

Удалить пустые строки с файла в Unix/Linux

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

Читайте также:  Astra linux зависает установка

-=== СПОСОБ 1 — Использование утилиты SED ===-

Sed потоковый редактор. С помощью этой утилиты, можно легко удалить все пустые строки. Используйте одну из следующих команд sed для удаления пустых строк из файла.

  • main.txt — Это исходный файл, из которого нужно удалить пустые строки.
  • output_file.txt — Будет служить файлом без пустых строк.

-=== СПОСОБ 2 — Использование perl ===-

И так, чтобы удалить пустые строки в файлу (у меня это main.txt), используйте:

# perl -i -n -e "print if /S/" main.txt

-=== СПОСОБ 3 — Использование утилиты AWK ===-

Используйте команду awk для удаления пустых строк из файла.

  • main.txt — Это исходный файл, из которого нужно удалить пустые строки.
  • output_file.txt — Будет служить файлом без пустых строк.
# awk 'NF > 0' main.txt > out.txt

-=== СПОСОБ 4 — Использование утилиты CAT ===-

Используйте команду cat для удаления пустых строк из файла.

  • main.txt — Это исходный файл, из которого нужно удалить пустые строки.
  • output_file.txt — Будет служить файлом без пустых строк.
$ cat main.txt | grep -Ev "^$" > out.txt

-=== СПОСОБ 5 — Использование утилиты TR ===-

Используйте команду cat для удаления пустых строк из файла.

  • main.txt — Это исходный файл, из которого нужно удалить пустые строки.
  • output_file.txt — Будет служить файлом без пустых строк.

Если появятся еще идеи. Я дополню данную тему!

Вот и все, статья «Удалить пустые строки с файла в Unix/Linux» завершена.

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Рубрики

  • Arch Linux (167)
  • Commands (36)
  • Debian’s (635)
    • Administration tools Ubuntu (37)
    • Backups Debian’s (7)
    • Database в Ubuntu (58)
    • Games (игры) (1)
    • Monitoring в Debian и Ubuntu (49)
    • Virtualization в Ubuntu / Debian/ Linux Mint (41)
      • Docker (22)
      • Kubernetes (6)
      • KVM (4)
      • OpenVZ (3)
      • Vagrant (5)
      • VirtualBox (6)
      • ArgoCD (1)
      • Concourse (1)
      • Gitlab (1)
      • Jenkinks (4)
      • Spinnaker (1)
      • Apache (32)
      • Cherokee (1)
      • FTP-services (5)
      • Lighttpd (1)
      • Nginx (26)
      • PHP (27)
      • Proxy для Debian’s (2)
      • Tomcat (4)
      • Панели управления в Ubuntu/Debian/Mint (24)
      • Установка и настройка почты на Ubuntu/Debian (12)
      • Хранилища (clouds) (2)
      • Administration tools freeBSD (19)
      • Database во FreeBSD (52)
      • Monitoring во freeBSD (37)
      • Virtualization во FreeBSD (22)
      • VoIP (1)
      • Установка Web сервисов (91)
      • Установка и настройка почты (6)
      • Установка из ports (пакетов) (19)
      • Установка из sorce code (исходников) (23)
      • Непрерывная интеграция (CI) (27)
      • Database в MacOS (36)
      • Monitoring в Mac OS (31)
      • Security (безопасность) (12)
      • Virtualization в Mac OS (30)
        • Docker (19)
        • Kubernetes (6)
        • Vagrant (5)
        • VirtualBox (5)
        • ArgoCD (1)
        • CircleCI (1)
        • Concourse (1)
        • Gitlab (1)
        • Jenkinks (4)
        • Spinnaker (1)
        • Administration tools CentOS (49)
        • Backups RPM’s (4)
        • Database в CentOS (68)
        • Monitoring в CentOS (67)
        • Virtualization в CentOS/ Red Hat/ Fedora (42)
          • Docker (23)
          • Kubernetes (6)
          • KVM (5)
          • OpenVZ (2)
          • Vagrant (5)
          • VirtualBox (6)
          • VMWare (3)
          • ArgoCD (1)
          • Concourse (1)
          • Gitlab (1)
          • Jenkinks (4)
          • Spinnaker (1)
          • Apache (35)
          • Cherokee (1)
          • DNS (3)
          • FTP (10)
          • Nginx (33)
          • PHP (34)
          • Proxy для RedHat’s (2)
          • Tomcat (2)
          • Voice (2)
          • Панели управления в CentOS/Red Hat/Fedora (27)
          • Прокси сервер на CentOS/RHEL/Fedora (4)
          • Установка и настройка почты на CentOS/RHEL/Fedora (14)
          • Хранилища (clouds) (1)

          соц сети

          Unix-Linux- в примерах

          Unix-Linux- в примерах

          Unix-Linux- в примерах

          Архив новостей

          Свежие записи

          Свежие комментарии

          • Глеб к записи Установка Adobe Flash Player в Debian/Ubuntu/Mint
          • Максим к записи Заблокировать User Agents используя Nginx
          • Денис к записи Как включить EPEL репозиторий на CentOS
          • Гость к записи Закомментировать/Раскомментировать строки vi/vim в Unix/Linux
          • Sergey к записи Установка и настройка OpenVPN сервера на Debian/Ubuntu/Linux Mint

          Источник

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

          Favorite

          Добавить в избранное

          Главное меню » CentOS » Как удалить пустые строки в файле в Linux

          Bash Heredoc

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

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

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

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

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

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

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

          Более того, вы можете сохранить или перенаправить вывод в другой файл, используя, например, оператор «больше» (>).

          $ grep -v ‘^$’ sample.txt > output.txt

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

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

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

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

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

          Заключение

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

          Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

          Источник

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