Как удалить пустые строки и строки с комментариями из 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, в котором показан пример того, как это сделать.
Читайте также: