Как удалить пустые строки и строки с комментариями из display linux

Обновлено: 21.11.2024

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

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

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

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

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

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

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

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

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

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

  • 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.

187, 0

Я безуспешно пытался удалить пустые строки из файла. Я попытался использовать все следующие параметры файла:

Это текстовый файл.

Выходной файл не изменяется. Я запускаю cygwin с оболочкой bash.

23 310, 4 623 

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

Поскольку это Cygwin, другим виновником может быть возврат каретки в стиле CPM, который есть в текстовых файлах Windows. Досадно, что многие вещи на самом деле не могут соответствовать возврату каретки.

1 690, 205 

вы уверены, что это пустая строка, а не пробелы и/или табуляция?

23 310, 4 623 

6 402 678 

Вы пробовали это (удалить любую строку, начинающуюся с новой строки):

1 690, 205 

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

310, 26

Еще 10 обсуждений, которые могут вас заинтересовать

1. Программирование оболочки и создание сценариев

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

Обсуждение начато: ksgnathan

2. Программирование оболочки и создание сценариев

Как удалить пустые строки в файле и сохранить файл с тем же именем?

У меня есть текстовый файл с пустыми строками. Я хочу, чтобы они были удалены перед загрузкой в ​​БД с помощью SQL *Loader. Ниже приведена командная строка, которую я использую для удаления пустых строк. sed '/^ *$/d' /loc/test.txt Если я использую приведенную ниже команду для замены файла после удаления пустых строк, она заменяет файл. (6 ответов)

Обсуждение начато: vel4ever

3. Приложения UNIX и Linux

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

Когда я просматриваю свой тестовый файл, я вижу несколько пустых строк. Однако, как только я делаю :set list для отображения скрытых символов, я вижу пустые строки буквально так: ^I$ Как их удалить? Я не могу найти регулярное выражение, чтобы соответствовать им. (3 ответа)

Обсуждение начато: alexsuv

4. Программирование оболочки и создание сценариев

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

Здравствуйте, я столкнулся с проблемой, связанной с удалением пустых строк из текстового документа. Ошибка ввода 17-05-2011 11:01:15 VisualSVN Server 2.1 1001 Следующая информация была включена в событие: line3 line4 Ошибка 17-05-2011 11:00:25 VisualSVN Server 2.1 . (13 ответов)

Обсуждение начато: mayursingru

5. Программирование оболочки и создание сценариев

удалить пустые строки и объединить строки в оболочке

Привет, я не эксперт в программировании оболочки, поэтому я пришел сюда, чтобы получить помощь от ваших гуру. Я пытаюсь адаптировать CSV-файл, который у меня есть, чтобы он работал для команды LOAD FROM. У меня есть CSV-файл с данными в формате ниже - --в формате файла xx,xx,xx,xx,,,,,,,,xx, xxxx,,,,xxx. (11 ответов)

Обсуждение начато: dvah

6. Программирование оболочки и создание сценариев

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

Я очень надеюсь, что кто-нибудь поможет мне с этим. У меня есть несколько файлов php с форума, который я запускаю, и теперь по какой-то причине после каждой строки есть пустые строки. Есть ли простой способ сделать скрипт, который делает следующее: * Если есть последовательные пустые строки, удалите их все, кроме одной. * Если. (9 ответов)

Обсуждение начато: KidCactus

7. UNIX для чайников, вопросы и ответы

Удалить пустые строки и комментарии из текстового файла

Обсуждение начато: msb65

8. Программирование оболочки и создание сценариев

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

Я присоединил 2 файла. Команда присоединения работала нормально. но результат показывает лишние пустые строки. Я попытался удалить пробелы с помощью команд awk (-- -42 RS= ORS="\n\n" file.txt) и sed (sed '/^ *$/d' file.txt), но не удалил Любые предложения, пожалуйста: D 123 вкладка. . вкладка . 234. (3 ответа)

Обсуждение начато: repinementer

9. UNIX для чайников, вопросы и ответы

удалить пустые строки в файле *.srt :)

Привет всем, я использую веб-переводчик, чтобы получить файл субтитров на моем языке. Но в выходном файле есть плохие пустые строки. Мне нужен скрипт (я использую Debian), чтобы удалить эти пустые строки. szintax моего плохого файла *.srt : ------ номер пустой1 номер:номер ---> номер:номер пустой2 текст1 . текст пустой S. (10 ответов)

В чем проблема? Как удалить пустые строки?

4 ответа 4

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

Выражение sed d удаляет каждую строку с любым количеством ( * ) пробельных символов ( \s ) в ней. grep -v выводит любую строку, которая не соответствует выражению.

Пример использования

grep -v '^$' удалит пустые строки. Но что, если у нас есть пробелы или табуляции в некоторых строках? Например, я добавил 3 пробела к частям вашего текста, и если мы сделаем cat -A, мы увидим, что он показывает символ конца строки $ , но он будет смещен.

Во второй строке есть 3 пробела, а в первой нет. Поэтому мы также хотим использовать класс символов [[:blank:]] для их учета:

Теперь вы должны увидеть, что строка с 3 добавленными пробелами исчезла. * означает ноль или более повторений символов, поэтому шаблон ^[[:blank:]]*$ также подразумевает ^$, когда в строке нет пробелов или символов табуляции. Таким образом, этот шаблон обрабатывает как действительно пустые, так и кажущиеся пустыми строки. Точно так же это применимо к grep или sed , потому что мы используем базовые выражения регулярных выражений, а [[:blank:]] является одним из классов символов POSIX, поэтому он переносим.

Мы также могли бы сделать что-то подобное на Python, но без шаблонов регулярных выражений:

Почему это работает? Потому что .split() в строке будет разделяться на пробелы для извлечения токенов без пробелов. Если строка содержит только пробелы, результирующий список из .split() будет пустым.

Как отметил ilkkachu в комментариях, проблема также может возникнуть, если вы используете окончания строк CRLF (используемые в текстовых файлах DOS/Windows). Легко увидеть, что если в файле используются окончания строк CRLF через cat -A , они будут помечены как ^M . Например,

Чтобы учесть возврат каретки, можно сделать следующее:

Может быть проще сначала использовать утилиту dos2unix, разработанную специально для преобразования файлов DOS в файлы Unix, а затем использовать sed и grep . См. ответ ByteCommander, в котором показан пример того, как это сделать.

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