Linux убрать пустые строки

Delete empty lines using sed

You may have spaces or tabs in your «empty» line. Use POSIX classes with sed to remove all lines containing only whitespace:

A shorter version that uses ERE, for example with gnu sed:

(Note that sed does NOT support PCRE.)

@BernieReiter ^\s*$ will match all «empty» lines, empty here means, the line contains no chars, or the line contains only empty strings (E.g. spaces). All matched lines will be removed by sed, with the d command.

I am missing the awk solution:

How does this work? Since NF stands for «number of fields», those lines being empty have 0 fields, so that awk evaluates 0 to False and no line is printed; however, if there is at least one field, the evaluation is True and makes awk perform its default action: print the current line.

sed

grep

awk

These show up correctly in your online tool, but [] should not be escaped in a bracket expression, so the code here isn’t correct for \[\[:space:\]\] or \[ \t\] — should be [[:space:]] and [ \t] .

@BenjaminW. Thanks for catching that. Those were not from the original author, but came from Edit 3 when it was changed from regular text to «code», which then «exposed» the `\` escaping. I have fixed them now.

sed ‘/^$/d’ should be fine, are you expecting to modify the file in place? If so you should use the -i flag.

Maybe those lines are not empty, so if that’s the case, look at this question Remove empty lines from txtfiles, remove spaces from start and end of line I believe that’s what you’re trying to achieve.

I believe this is the easiest and fastest one:

If you need to ignore all white-space lines as well then try this:

s="\ \ a\ b\ \ Below is TAB:\ \ Below is space:\ \ c\ \ "; echo "$s" | grep . | wc -l; echo "$s" | grep '\S' | wc -l 

Yes, I know, but the initial question did not mention whether the source is a file or something else, so the solution is what comes after «|», and before it just an example of a source. Simply to distinguish the solution from the source of lines.

grep ‘\S’ is definitely not portable. If you have grep -P then you can use grep -P ‘\S’ but it’s not supported on all platforms, either.

Читайте также:  Linux usb device numbers

The downside of grep . compared to the other solutions is that it will highlight all the text in red. The other solutions can preserve the original colors. Compare unbuffer apt search foo | grep . to unbuffer apt search foo | grep -v ^$

@wisbucky grep does not default to color output, but often it’s enable via a shell alias or environment variable. Use grep —color=never . to override.

Another option without sed , awk , perl , etc

strings — print the strings of printable characters in files.

«For each file given, GNU strings prints the printable character sequences that are at least 4 characters long. » so very short lines might give you a surprise if you’re unaware of this. There is a —bytes=min-len option to allow shorter lines.

With help from the accepted answer here and the accepted answer above, I have used:

$ sed 's/^ *//; s/ *$//; /^$/d; /^\s*$/d' file.txt > output.txt `s/^ *//` => left trim `s/ *$//` => right trim `/^$/d` => remove empty line `/^\s*$/d` => delete lines which may contain white space 

This covers all the bases and works perfectly for my needs. Kudos to the original posters @Kent and @kev

The command you are trying is correct, just use -E flag with it.

-E flag makes sed catch extended regular expressions. More info here

sed -n '/ / p' filename #there is a space between '//' 

You are most likely seeing the unexpected behavior because your text file was created on Windows, so the end of line sequence is \r\n . You can use dos2unix to convert it to a UNIX style text file before running sed or use

to remove blank lines whether or not the carriage return is there.

Hi, what is the -r flag doing and is it possible to combine it with -i to modify the file directly and avoid printing to screen. In addition, I think that this command would also work as sed -r «/^\r$/d»

This works in awk as well.

awk '!/^$/' file xxxxxx yyyyyy zzzzzz 

You can do something like that using «grep», too:

My bash -specific answer is to recommend using perl substitution operator with the global pattern g flag for this, as follows:

$ perl -pe s'/^\n|^[\ ]*\n//g' $file xxxxxx yyyyyy zzzzzz 

This answer illustrates accounting for whether or not the empty lines have spaces in them ( [\ ]* ), as well as using | to separate multiple search terms/fields. Tested on macOS High Sierra and CentOS 6/7.

FYI, the OP’s original code sed ‘/^$/d’ $file works just fine in bash Terminal on macOS High Sierra and CentOS 6/7 Linux at a high-performance supercomputing cluster.

Источник

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

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

Читайте также:  Linux mdf to sql

-=== СПОСОБ 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 способа, которые могут быть полезны для удаления пустых строк в текстовых файлах. Есть ли другие идеи о том, как удалить эти ненужные пустые строки? Не стесняйтесь связаться с нами в разделе комментариев.

          Читать Проблемы с практикой Python. Приготовьтесь к следующему собеседованию. Анализатор журнала. Часть 3

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

          Источник

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