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

Обновлено: 07.07.2024

У меня есть пара тысяч строк в рабочей тетради. Есть несколько сотен строк, которые являются пустыми. Как я могу удалить все полностью пустые строки?

Мне кажется странным, что вы получаете пустые строки с этим кодом. Не могу придумать сценарий, в котором distinguishedname пользователя равно null. Единственная проблема с вашим кодом, которую я вижу, может быть просто опечаткой в вашем первом вычисляемом выражении:

вместо этого должно быть

Однако это должно было просто привести к синтаксической ошибке, которая будет легко поймана перед выполнением.

Значение null или пустое значение, равное False в PowerShell. Where-Object позволит передавать в качестве выходных данных только объекты с заполненным свойством для GID . Вы также получите аналогичные результаты от статических методов string. Это также добавит удобочитаемости вашему коду.

Существует также [string]::IsNullOrEmpty()

Объект сортировки имеет уникальное свойство -, которое удалит большинство пустых строк, все, кроме одной, как вы уже догадались. Вы также можете подключиться к

или что-то подобное, дайте мне знать, если я должен это уточнить.

Похожие вопросы:

У меня есть набор данных, который содержит пустые ячейки. Это выглядит так Year Volume ID 2000 999 LSE 2001 . LSE . 555 LSE 2008 . NYSE 2010 1099 NYSE Мне нужно удалить строку, содержащую пустые.

Допустим, у меня был текстовый файл со следующими девятью строками: foo bar baz qux quux Как я могу использовать Sublime Text 2, чтобы удалить все четыре пустые / пустые строки, оставив только пять.

Какую команду я могу выполнить, чтобы удалить пустые строки в Vim?

Мне нужно рекурсивно удалить все пустые папки для определенной папки в PowerShell (проверка папки и подпапки на любом уровне). На данный момент я использую этот сценарий без успеха. Не могли бы вы.

У меня есть пара тысяч строк в рабочей тетради. Есть несколько сотен строк, которые являются пустыми. Как я могу удалить все полностью пустые строки?

Как удалить пустые строки из строки? Я пробовал some_string = some_string.gsub(/^$/, ); и многое другое, но ничего не работает.

Допустим, у меня есть список строк Python, например: x = [, , test, , , not empty, , yes, ] Как я могу удалить: все ведущие пустые строки все пустые строки trailing все пустые строки 'repeated' (т.

Не уверен, что это возможно, но я хотел бы использовать Powershell для выполнения следующего: удалите первые 3 пустые строки в любом блоке пустых строк. Например: hello this is a test this is still.

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

Я новичок в написании сценариев PS. Я обнаружил, что, вообще говоря, PS добавляет много новых строк к выходу своих команд. Ниже я привожу несколько примеров того, что я нашел несколько обобщенным о.

Я пытаюсь просто удалить первую строку около 5000 текстовых файлов перед их импортом.

Я все еще очень новичок в PowerShell, поэтому не уверен, что искать или как подойти к этому. Моя текущая концепция с использованием псевдо-кода:

однако я не могу понять, как сделать что-то вроде contains.

Это не самый эффективный в мире, но это должно работать:

в то время как я действительно восхищаюсь ответом от @hoge как для очень краткой техники, так и для функции обертки, чтобы обобщить ее, и я поощряю upvotes для нее, я вынужден комментировать два других ответа, которые используют временные файлы (он грызет меня, как ногти на доске!).

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

. или в краткой форме:

используя переменную нотацию, вы можете сделать это без временного файла:

мне просто нужно было выполнить ту же задачу, и gc | select . | sc взял на себя 4 ГБ ОЗУ на моей машине при чтении файла 1.6 GB. Он не заканчивался по крайней мере в течение 20 минут после чтения всего файла (как сообщает Read Bytes in Процесс Explorer), и в этот момент мне пришлось убить его.

ниже мое решение. Да, он использует временный файл, но в моем случае это не имело значения (это было чертовски огромное создание таблицы SQL и файл инструкций insert):

вдохновленный ответ AASoft, Я вышел, чтобы улучшить его немного подробнее:

  1. избежать переменная цикла $i и сравнение С 0 в каждом цикле
  2. оберните исполнение в try..finally блок, чтобы всегда закрывать файлы в использовании
  3. сделать решение работать для произвольное количество строк удалить С начала файла
  4. использовать переменную $p для ссылки на текущий каталог

эти изменения приводят к следующим кодом:

первое изменение принесло время обработки для моего файла 60 MB вниз от 5.3s to 4s . Остальные изменения носят более косметический характер.

Я только что узнал из сайта:

или вы можете использовать псевдонимы, чтобы сделать это коротко, как:

skip` не работает, поэтому мой обходной путь

именно столько. Далее следует длинное скучное объяснение. Get-content возвращает массив. Мы можем "индексировать" переменные массива, как показано в этой и другое сценаристы посты.

например, если мы определяем переменную массива, как это,

Итак, $ array возвращает

тогда мы можем "индексировать" этот массив, чтобы получить только его 1-й элемент

Я новичок в написании сценариев PS. Я обнаружил, что, вообще говоря, PS добавляет много новых строк в вывод своих команд. Ниже я привожу несколько примеров того, что я нашел несколько обобщенным относительно вывода (по умолчанию?) В командах PS. Я привык к Unix-подобному выводу, где в обобщенном выводе этих строк практически нет (конечно, ничто не мешает программисту добавить их).

Есть ли настраиваемый способ уменьшить количество этих новых строк и, возможно, многословие?

РЕДАКТИРОВАТЬ: Позже я нашел этот аналогичный вопрос (с небольшими вариациями) в SU.

Примеры

Это то, что я вижу с помощью пары команд

Прокручивая вправо, можно увидеть мои комментарии. Я отметил " EXTRA LINE "строки, которые я хочу удалить. Я пометил" VERBOSITY LINE "линии, которые я хочу удалить, но которые я как бы" терплю "больше.

Для сравнения: это то, что я вижу в Linux, который я считаю "менее подробным".

Список других источников, не посвященных проблеме

1 ответ

Вы можете определить индивидуальный Out-Default функция, которая удаляет все пустые / пустые строки из вывода (только для отображения):

Вы можете поместить это в свой $PROFILE файл будет доступен во всех будущих сеансах (кроме тех, где PowerShell вызывается с -NoProfile ).

Все команды неявно используют эту функцию для вывода на хост (консоль), потому что Out-Default - это специальная команда, которую PowerShell вызывает за кулисами для обработки вывода на хост (то есть для вывода, который не захватывается, не передается по конвейеру и не перенаправляется).

Поэтому, как только функция была определена, просто вызовите Get-ChildItem (который имеет псевдоним dir ), например, должен выдавать результат с удалением всех пустых / пробелов.

Обратите внимание, что это не влияет на захват / передачу / перенаправление вывода, что желательно.

Предупреждение: как указано, Out-Default влияет только на вывод нахост, но не на поведение других систем форматирования. Out-* командлеты, которые при желании придется переопределять отдельно.

Примечательно, что новое определение Out-Default никак не влияет Out-File и его эффективные псевдонимы > / >> - см. нижний раздел для пользовательского Out-File реализация, которая выполняет такое же удаление пустых строк.

В стороне: PowerShell по умолчанию Out-Default команда, реализованная как командлет. Пока ты можешь позвонить Out-Default напрямую (будь то реализация по умолчанию или индивидуальная), для этого нет причин, и этого следует избегать - см. этот ответ.

Как указывает Compo, вы можете использовать ту же технику ad hoc для данной команды; например:

Обратите внимание, однако, что - в отличие от Out-Default подход - этот метод подходит только для отображения, потому что тогда вы выводите строковые представления, а не исходные объекты (и если бы вы Write-Host , вы бы полностью пропустили (успешный) выходной поток).

На заказ Out-File функция, которая также удаляет пустые / пустые строки и также вызывается > / >> :

Эта функция более сложная, чем обычная Out-Default функция, поскольку она должна поддерживать те же параметры, что и исходный командлет.

Будет заметно медленнее оригинала Out-File / > / >> , и он не поддерживает общие -Confirm а также -WhatIf параметры (которые редко используются с Out-File , Однако).

Как показано ниже, функция предназначена для использования в PowerShell [Core] v6+ - см. Комментарии в исходном коде, чтобы узнать, как (легко) адаптировать ее к Windows PowerShell.

чтобы удалить пустые строки. Но как я могу удалить их с помощью '- replace' ?

Я хотел извлечь некоторые строки из некоторых текстовых файлов. После некоторого исследования этих файлов я нашел некоторый шаблон, по которому строки появляются в текстовом файле. Я сочинил короткий сценарий powershell с помощью google-поиска. Этот скрипт получает два параметра (путь к текстовому.

Некоторые заметки о коде см. в оригинале. Ницца :)

Этот фрагмент кода от Рэнди Шкретки отлично работает для меня, но у меня была проблема, что у меня все еще была новая строка в конце файла.

Поэтому я добавил, наконец, это:

Вы можете использовать-match вместо-eq, если также хотите исключить файлы, содержащие только whitespace символов:

Не специально используя -replace , но вы получаете тот же эффект, анализируя содержимое с помощью -notmatch и regex.

Чтобы решить эту проблему с помощью RegEx, вам нужно использовать многострочный флаг (?m):

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

Вы не можете сделать замену, вы должны заменить SOMETHING на SOMETHING, и у вас нет ни того, ни другого.

Это приведет к удалению пустых строк или строк только с whitespace символами (tabs/spaces).

файл

PS /home/edward/Desktop> Get-Content ./copy.txt

[Запись на Рабочем Столе]

Имя=калибр Exec=

Начните с получения содержимого из файла и обрежьте пробелы, если таковые имеются в каждой строке текстового документа. Это становится объектом, переданным объекту where, чтобы пройти через массив, просматривая каждый элемент массива с длиной строки больше 0. Этот объект передается для замены содержимого файла, с которого вы начали. Вероятно, было бы лучше создать новый файл. Последнее, что нужно сделать, это прочитать содержимое только что созданного файла и увидеть вашу потрясающую красоту.

(Get-Content ./copy.txt).Trim() | Where-Object | Set-Content ./copy.txt

Get-Content ./copy.txt

Кажется, есть вопросы, которые похожи, плавающие в интернете, хотя ответы различаются, и я просто не могу получить результат, который ищу. Ниже просто добавляется содержимое в текстовый файл в конце файла Add-Content -Path HeartBeat.txt -Value (Get-Content insertme.txt) хотя я хочу с помощью.

Я использую этот код для удаления адреса email из текстового файла с именем database-email.txt : // unsubscribe if (isset($_POST['email-unsubscribe'])) < $emailToRemove = $_POST['email-unsubscribe'] . ','; $content = file_get_contents('database-email.txt'); if($content =.

Это удаляет trailing whitespace и пустые строки из file.txt

Похожие вопросы:

Как я могу игнорировать или удалять пустые строки при чтении из текстового файла с помощью Scala? Пример приведен ниже: как вы можете видеть, вторая строка-это дополнительная строка. I. Период Это.

Я должен извлечь столбцы из текстового файла, описанного в этом посте: Извлечение столбцов из текстового файла с помощью однострочного Perl: аналогично Unix cut но я должен сделать это также в.

Я пытаюсь получить значения из текстового файла, в котором записи разделены с помощью ' | ' .am получение значений с помощью строки .Split method..but в некоторых местах разделитель появляется.

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

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

Я использую этот код для удаления адреса email из текстового файла с именем database-email.txt : // unsubscribe if (isset($_POST['email-unsubscribe'])) < $emailToRemove = $_POST['email-unsubscribe'].

На данный момент для подсчета количества строк из текстового файла я использую : File f = new File(lorem.txt); if(f.exists())< try < BufferedReader bf = new BufferedReader(new FileReader(f));.

Не уверен, что это возможно, но я хотел бы использовать Powershell для выполнения следующего: удалите первые 3 пустые строки в любом блоке пустых строк. Например: hello this is a test this is still.

Я новичок в написании сценариев PS. Я обнаружил, что, вообще говоря, PS добавляет много новых строк к выходу своих команд. Ниже я привожу несколько примеров того, что я нашел несколько обобщенным о.

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