linux-notes.org
Иногда, у нас имеются файлы и в них много пустых строк — это не очень удобно (по крайней мере для чтения). Файлы можно отредактировать вручную, если файл имеет несколько пустых строк, но если файл имеет тысячи пустых строк, это трудно сделать вручную. Используйте один из следующих методов для удаления пустых строк из файла.
-=== СПОСОБ 1 — Использование утилиты SED ===-
Sed потоковый редактор. С помощью этой утилиты, можно легко удалить все пустые строки. Используйте одну из следующих команд sed для удаления пустых строк из файла.
- main.txt — Это исходный файл, из которого нужно удалить пустые строки.
- output_file.txt — Будет служить файлом без пустых строк.
-=== СПОСОБ 2 — Использование perl ===-
И так, чтобы удалить пустые строки в файлу (у меня это main.txt), используйте:
-=== СПОСОБ 3 — Использование утилиты AWK ===-
Используйте команду awk для удаления пустых строк из файла.
- main.txt — Это исходный файл, из которого нужно удалить пустые строки.
- output_file.txt — Будет служить файлом без пустых строк.
-=== СПОСОБ 4 — Использование утилиты CAT ===-
Используйте команду cat для удаления пустых строк из файла.
- main.txt — Это исходный файл, из которого нужно удалить пустые строки.
- output_file.txt — Будет служить файлом без пустых строк.
-=== СПОСОБ 4 — Использование утилиты TR ===-
Используйте команду cat для удаления пустых строк из файла.
- main.txt — Это исходный файл, из которого нужно удалить пустые строки.
- output_file.txt — Будет служить файлом без пустых строк.
Если появятся еще идеи. Я дополню данную тему!
Вот и все, статья «Удалить пустые строки с файла в Unix/Linux» завершена.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.
Удаление строк из файла с использованием sed
В Unix команда SED удаляет одну или несколько строк из указанного файла по желанию пользователя. Эта утилита используется для работы с командной строкой Unix, для удаления из файла выражений, которые могут быть идентифицированы с помощью определяющего разделителя (например, запятая, табуляция или пробел), по номеру строки или путем поиска строки, выражения или адреса строки в синтаксисе sed.
Sed: удалить одну или несколько строк из файла
Синтаксис
string = ряд символов, найденный в строке
regex = регулярное выражение, соответствующее искомому шаблону
addr = адрес строки (номер или шаблон)
Примеры Sed
Вот несколько примеров использования приведенного выше синтаксиса.
Используйте следующий код, чтобы удалить третью строку:
Удалите строку, содержащую ряд букв «awk», используя:
Вы можете удалить последнюю строку, введя:
Или удалить все пустые строки:
Удалить строку, соответствующую регулярным выражениям (путем исключения одного из них, содержащего цифровые символы, как минимум 1 цифру, расположенные в конце строки):
Удалить интервал между строками 7 и 9:
Та же операция, что и приведенная выше, но с заменой адреса параметрами:
Вышеприведенные примеры отображают изменения только при открытии файла (stdout1 = screen).
Для постоянных изменений в старых версиях (ниже 4) используйте временный файл для GNU sed с использованием команды -i [suffix]:
Изображение: © John Schnobrich — Unsplash.com
Несколько слов благодарности всегда очень кстати.
Удаляем комментарии и пустые строки из файла на Linux
Удаляем комментарии и пустые строки из файла на Linux. При редактировании каких-либо конфигурационных файлов, в них присутствуют закомментированные и пустые строки — это не очень удобно (по крайней мере для чтения). Файлы можно отредактировать вручную, если в нем несколько закомментированных и пустых строк, но если файл имеет тысячи таких строк, это трудно сделать вручную. Сегодня в статье научимся избавляться от лишних пустых и закомментированных строк в файле.
Что такое комментарии в программировании?
Если вы загляните в исходный код или файл конфигурации, вы заметите, что многие строки начинаются со звездочки «*», косой черты «/», или хеша «#», или точки с запятой «;».
Эти строки известны как Комментарии.
В программировании комментарий — это удобочитаемое описание или аннотация, используемая для пояснения целей фрагментов кода.
Они помогают пользователям и другим программистам легко понять, что делает код.
Как правило, комментарии и пустые строки будут игнорироваться компиляторами и интерпретаторами. Они предназначены только для программистов.
Синтаксис комментариев варьируется в зависимости от языка программирования.
Теперь давайте посмотрим, как исключить или пропустить эти комментарии и пустые строки и отображать только те строки, которые не закомментированы.
Вывод содержимого файлов без комментариев и пустых строк на Linux
Позвольте мне показать вам содержимое файла sources.list в одной из моих систем Ubuntu:
Вы видите, что многие строки закомментированы символом «#». Это делает файл неудобным для чтения. Это небольшой файл, так что это не страшно.Но когда вы читаете очень длинные файлы конфигурации, например, «httpd.conf» или «php.ini», вам придется пройти через множество комментариев и пустых строк, и будет немного сложно найти, какие строки активны, а какие нет.Чтобы отфильтровать все комментарии и пустые строки от отображения в выводе файла, используйте команду grep, как показано ниже:
- первый символ ^ обозначает начало строки в данном файле, т.е. /etc/apt/sources.list.
- [^ # * /;] — все строки начинаются с любых символов, кроме этих четырех символов «#», «*», «/», «;». Другими словами, все строки, начинающиеся с символов «#», «*», «/», «;» будут исключены из вывода.
Пример вывода вышеуказанной команды:
Все комментарии и пустые строки исчезли.
Теперь вывод вполне читабелен.Я предпочитаю способом через grep фильтровать ненужные строки, отображаемые в выводе. Вы также можете сделать это с помощью команд awk и sed.
Удаление комментариев и пустых строк в файле на Linux
Давайте теперь отредактируем файл чтобы в нем не оставалось закомментированных строк.
Можно и такой командой:
Как удалить комментарии из нескольких файлов
find -name ‘*.c’ | xargs sed -i ‘0,/^*\/$/d’
Как удалить пустые строки из файла Unix
Мне нужно удалить все пустые строки из входного файла и записывать в выходной файл. Вот мои данные, как показано ниже.
8 ответов
это говорит sed удалить каждую строку, соответствующую регулярному выражению ^$ т. е. каждая пустая строка. The -i флаг редактирует файл на месте, если ваш sed не поддерживает, что вы можете написать вывод во временный файл и замените оригинал:
если вы также хотите удалить строки, состоящие только из пробелов (а не только пустых строк), используйте:
Edit: также удалить пробелы в конце строк, потому что по-видимому, вы решили, что вам это тоже нужно:
NF также удаляет строки, содержащие только пробелы или вкладки, регулярное выражение /^$/ нет.
использовать grep чтобы соответствовать любой линии, которая не имеет ничего между стартовым якорем ( ^ ) и конец якоря ( $ ):
если вы хотите удалить строки только с пробелами, вы все равно можете использовать grep. Я использую регулярные выражения Perl в этом примере, но вот другие способы:
или, без регулярных выражений Perl:
удаляет все строки, состоящие только из пробелов (или полностью пустые). Вы можете изменить пробел на [ \t] здесь \t является представлением для tab. Будь то ваша оболочка или ваш sed будет делать расширение варьируется, но вы, вероятно, можете ввести символ вкладки напрямую. И если вы используете GNU или BSD sed , вы можете сделать редактирование на месте, если это то, что вы хотите, с .
если я выполняю приведенную выше команду тем не менее, у меня есть пустые строки в моем выходном файле. Какая может быть причина?
там может быть несколько причин. Возможно, у вас нет пустых строк, но у вас есть много пробелов в конце строки, поэтому похоже, что у вас есть пустые строки, когда вы выводите файл на экран. Если это проблема, то:
новое регулярное выражение удаляет повторяющиеся пробелы в конце строки; см. предыдущее обсуждение пробелов или вкладок.
другой возможно, что ваш файл данных пришел из Windows и имеет окончание строки CRLF. Unix видит возврат каретки в конце строки; он не является пустым, поэтому строка не удаляется. Есть несколько способов справиться с этим. Надежного tr удалить ( -d ) код символа восьмеричный 15, он же control-M или \r или возврата каретки:
если ни один из этих работ, то вам нужно показать шестнадцатеричный дамп или восьмеричный дамп ( od -c ) из первых двух строк файла, таким образом, мы можем видеть, с чем мы столкнулись:
судя по комментариям, что sed -i не работает для вас, вы не работаете на Linux или Mac OS X или BSD-на какой платформе вы работаете? (AIX, Solaris, HP-UX приходят на ум как относительно правдоподобные возможности, но есть и множество других, менее правдоподобных.)
вы можете попробовать POSIX именованные классы символов, такие как sed -e ‘/^[[:space:]]*$/d’ ; он, вероятно, будет работать, но не гарантируется. Вы можете попробуйте это:
если это сработает, между «Hello» и «World» будет три пробела. Если нет, вы, вероятно, получите сообщение об ошибке от sed . Это может избавить вас от горя по поводу ввода вкладок в командной строке.
grep смотрит на ваш файл строка за строкой; точка . что соответствует за исключением символ. Поэтому вывод из grep — это все строки, которые состоят из чего-то другого, чем одна новая строка.