Calcweb.ru

Информационный портал
11 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как определить количество символов, слов и строк в любом текстовом файле с помощью PowerShell

Найти количество слов, символов и строк в текстовом файле с помощью PowerShell

Если вы все еще используете старый добрый Блокнот для создания эссе или контента для своего веб-сайта и хотите узнать количество символов, используемых в текстовом файле, вам поможет командлет PowerShell.

PowerShell имеет встроенный командлет с именем «Measure-Object». Он рассчитывает значения свойств определенных типов объектов.

Measure-Object выполняет три типа измерений в зависимости от параметров в команде. Командлет может подсчитывать объекты и вычислять минимум, максимум, сумму и среднее числовых значений.

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

Получить строку, символ и количество слов в текстовом файле

Запустите PowerShell, введите или вставьте следующую команду и нажмите клавишу ВВОД.

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

получить количество слов в текстовом файле

В этом примере текстовый файл Net-Helpmsg.txt содержит 24 строки, 333 слова и 1839 символов.

Текстовые редакторы и текстовые редакторы

Современные текстовые редакторы, такие как Notepad ++ и другие, отображают количество строк, количество символов и используемых слов в строке состояния при вводе. В Notepad ++ вы можете просмотреть статистику, щелкнув Summary … в меню View. В диалоговом окне «Сводка» также отображается количество байтов, которое не отображается в строке состояния.

получить количество слов в текстовом файле

В Microsoft Word, нажмите на показатель количества слов, показанный в строке состояния.

получить количество слов в текстовом файле

Откроется диалоговое окно «Количество слов», в котором отображается сводная информация о файле, включающая количество страниц, слов, символов (с пробелами и без них), абзацы и строки в этом файле.

получить количество слов в текстовом файле

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

Работа со строками в PowerShell

Результатом работы команды в PowerShell всегда является не текст, а объект. Это касается и работы с текстом. Каждая строка является отдельным объектом со своими свойствами и методами, которыми можно пользоваться для обработки текста.

Для примера создадим переменную, в которую поместим строку, а затем выведем ее свойства и методы:

$string = ″My name is Kirill″
$string | Get-Member

свойства и методы строки

Свойства

Начнем со свойств, которых у строки оказалось немного — всего два. Свойство Length содержит длину строки, или количество символов:

А свойство Chars позволяет обращаться к любому символу в строке по его номеру, например:

свойства строки

Кстати, к символам в строке можно обращаться без использования Chars, а как к элементам массива, по индексу:

А если указать отрицательное число, то массив будет перебираться с конца:

Также кроме одного символа можно указать диапазон, например:

обращение к элементам строки

Методы

Теперь возьмем строку и начнем над ней издеваться приступим к методам.

Читайте так же:
Divinity: Original Sin – путешествия в компании

Метод Insert служит для вставки подстроки в исходную строку, начиная с указанного символа. Для примера вставим ″ .N″ в конец строки (после 17 символа):

Метод Remove удаляет символы из строки начиная с указанного символа, например:

Метод Replace находит в исходной строке подстроку и заменяет ее на другую, например:

методы insert, remove и replace

Метод Split разбивает строку на массив строк с помощью разделяющего символа или группы символов. Например так мы разобьем строку, используя в качестве разделителя пробел:

А так укажем в качестве разделителя букву е:

Если необходимо указать несколько разделителей, то достаточно просто перечислить их через запятую:

метод split

Метод Substring позволяет получить подстроку, сформированную из исходной строки. Есть два варианта использования этого метода. К примеру результатом выполнения следующей команды будет строка, полученная путем удаления из исходной строки заданного количества символов:

А таким способом мы получим подстроку, сформированную из исходной строки, начинающуюся с указанной позиции (8) и содержащую указанное количество символов (9):

метод substring

Метод Clone создает точную копию исходного объекта, например:

Метод CompareTo производит сравнение двух строк и выдает 0, если строки совпадают:

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

Метод Equals также сравнивает две строки и в зависимости от результата возвращает True или False:

Кстати, такой же результат получается при использовании оператора сравнения -eq:

$string -eq $string2

методы clone, compareto и equals

Метод Contains проверяет наличие в строке указанной подстроки, и в зависимости от результата возвращает True или False. Например:

Метод StartsWith проверяет, начинается ли строка с указанной подстроки:

а метод EndsWith проверяет, заканчивается ли исходная строка подстрокой:

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

методы contains, startwith, endwith

Говоря о зависимости от регистра символов, стоит упомянуть еще два метода. Метод ToUpper переводит исходную строку в верхний регистр:

а метод ToLower соответственно в нижний:

методы toupper и tolower

С их помощью можно избавиться от регистрозависимости, например при поиске или сравнении:

избавление от регистрозависимости

Метод IndexOf находит индекс начала вхождения подстроки в исходной строке. Например, создадим строковую переменную:

$string = ″substring one, substring two, substring three″

Теперь выведем индекс начала вхождения подстроки (substring):

Как видите, метод выдал 0 — это номер первого символа ( s ubstring one, substring two, substring three) в исходной строке.

Метод LastIndexOf показывает индекс последнего вхождения подстроки, т.е. номер начала последнего вхождения указанной подстроки в исходной строке. Например, следующая команда выдаст 30 — номер последнего символа (substring one, substring two, s ubstring three) в строке:

методы indexof и lastindexof

Метод IndexOfAny возвращает первое, а метод LastIndexOfAny — последнее вхождение любого символа из подстроки в исходной строке. Например:

Эта команда, как и в случае с IndexOf выдаст 0 — номер первого символа (s) в строке. А так мы получим 42 — номер последнего символа подстроки (substring one, substring two, substrin g three) в строке:

Читайте так же:
Что такое функция New Identity в Tor Browser

методы indexofany и lastindexofany

Методы PadLeft и PadRight позволяют дополнить исходный текст до нужного количества символов слева или справа. Для примера создадим новую переменную $string и посмотрим ее длину:

$string = ″my name is Vasya Pupkin″
$string.Length

Как видите, строка содержит 23 символа. Дополним ее точками до 26 символов слева:

а получившуюся строку дополним знаками вопроса до 30 символов справа:

В принципе, процесс можно не разбивать на части, а дополнить сразу с двух сторон:

методы padleft и padright

Методы TrimStart, TrimEnd и Trim обрезают повторяющиеся символы по бокам строки. TrimStart обрезает символы в начале, TrimEnd в конце строки, а Trim — с обоих сторон сразу. В качестве примера возьмем получившуюся в прошлый раз строку и обрежем лишние точки в начале:

и лишние знаки вопроса в конце:

методы trimstart и trimend

Немного о типах данных. Текущий тип данных можно посмотреть с помощью метода GetType, например:

$a = ″string ″
$a.GetType()

В поле Name указан тип данных String (строка).

метод gettype

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

Если теперь проверить тип данных, то вместо String мы увидим тип Char[].

метод tochararray

Преобразовать тип данных можно и с помощью статического метода Convert. Для примера создадим переменную, содержащую строку, а затем преобразуем ее в число (Int32);

$string = ″123″
$int = [convert]::ToInt32($string)

статический метод convert

Статические методы

Кроме обычных к строке можно применять статические методы. Вывести их список можно все той же командой Get-Member с ключом -Static.

статические методы строки

Методов много, поэтому коротко пробежимся по некоторым из них.

Метод Concat используется для объединения нескольких строк. В качестве примера создадим три стоковых переменных и объединим их:

$a = ″one″
$b = ″two″
$c = ″three″
[string]::Concat($a,$b,$c)

Метод Join также объединяет несколько строк, но с использованием заданного разделителя. Например, объединим строки используя в качестве разделителя двоеточие:

статические методы concat и join

Метод Copy создает точную копию исходной строки:

Метод Compare производит сравнение двух строк и выдает 0 при их совпадении или 1-1 при несовпадении, аналогично методу CompareTo:

Метод Equals также производит сравнение и выдает результат в виде TrueFalse:

статические методы compare и equals

Метод Compare отличается одним моментом — он позволяет сравнивать строки без учета регистра символов. Для этого в нем используется переключатель $true (без учета регистра) или $false (с учетом регистра). Для примера создадим две переменных, отличающихся только регистром символов:

$a = ″string″
$b = ″String″

А теперь сравним их. Эта команда покажет, что строки идентичны:

А эта — что они различаются:

использованием регистрозависимости и без

И еще пара интересных методов для проверки строк. Метод IsNullOrEmpty проверяет наличие строки, а также не является ли она пустой строкой:

Метод IsNullOrWhiteSpace тоже проверяет наличие строки, а также то, что строка содержит только white-space символы (пробел, табуляция, символ новой строки и т.п.):

Читайте так же:
RunCat для Windows — анимированный индикатор загрузки процессора в виде бегущего кота

PowerShell: системное администрирование и программирование

Всё о PowerShell в Windows и на Linux. Системное администрирование Windows

Как в PowerShell прочитать содержимое файла (аналог cat)

Как в PowerShell передать содержимое файла в командлет

В заметке «Как в PowerShell сохранить вывод в файл (аналоги > и >>)» мы рассмотрели, как сохранить вывод командлета в файл. В этой заметке мы рассмотрим, как получить содержимое файла и отправить его командлету для обработки или для вывода на экран.

В Bash на Linux когда нужно передать данные из файла команды или работают со стандартным вводом или путь до файла указывается с помощью опции. В PowerShell командлеты также могут принимать данные из стандартного ввода, например:

Как вы уже могли понять из приведённой выше команды, аналогом cat в PowerShell является командлет Get-Content. Если нужно в опцию передать содержимое файла, то используется конструкция пример которой показан в следующей команде:

Аналог cat, tail и head в PowerShell

В Linux имеется несколько команд для чтения файла:

  • cat — считывает весь файл
  • tail — считывает указанное количество строк (по умолчанию 10) от конца файла
  • head — считывает указанное количество строк (по умолчанию 10) от начала файла

Для всего этого в PowerShell используется командлет Get-Content.

Пример считывания содержимого файла C:PSInstalledRoles.csv (при этом содержимое будет передано по конвейеру или если это последний командлет, то будет выведено в стандартный вывод, на экран):

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

Начиная с PowerShell 3.0, Get-Content может также получать указанное количество строк от начала или до конца элемента.

Для последующих примеров создадим текстовый файл, в который запишем перечень папок и файлов текущей директории:

Как прочитать файл и сохранить его в переменной

В следующей команде будет прочитан файл current_dir.txt и его содержимое будет сохранено в переменную $dir:

Опция -Path и использование подстановочных знаков с Get-Content

Для указания файла можно использовать опцию -Path, но её можно и опускать:

Можно использовать подстановочные знаки:

Путь должен указать до элементов, но не до контейнеров. Например, можно указать путь до одного или более файлов, но не до директории.

Как прочитать определённое количество строк от начала файла

С помощью опции -TotalCount (её псевдонимы -First и -Head) вы моете указать количество строк, которое должно быть прочитано от начала файла.

Следующая команда прочитает 13 первых строк файла current_dir.txt:

Как прочитать определённое количество строк от конца файла

С помощью опции -Tail вы можете прочитать последние строки файла, например:

Как узнать, сколько строк было прочитано

Командлет Get-Content возвращает массив строк, поэтому вы можете использовать методы для массивов, например, следующие команды покажут количество строк в файле current_dir.txt:

Читайте так же:
Как в Windows 10 создать ярлыки управления громкостью для любой программы

Для подсчёта количества строк вы также можете использовать командлет Measure-Object:

Обратите внимание, что эти команды вернули разное количество строк. Первая команда вернула общее количество строк вместе с пустыми, а вторая посчитала только непустые строки.

Как быстро и легко читать текстовые файлы в Powershell

Текстовые файлы есть повсюду, и вам придется их прочитать, независимо от вашей роли или должностных обязанностей. Фактически, если вы ИТ-специалист, вам придется чаще создавать, читать или работать с текстовыми файлами, поскольку они бывают разных форматов. Эта гибкость также сделала текстовые файлы наиболее удобным способом идентификации сценариев, хранения сведений о конфигурации и т. Д.

PowerShell понимает важность текстовых файлов и упрощает доступ к ним и их чтение. В этой статье TipsMake может показать вам, как читать текстовые файлы в PowerShell.

Способы чтения текстовых файлов в Powershell

  1. Прочитать полное содержание
  2. Прочтите отрывок из содержания
  3. Читать построчно
    1. Используйте Get-Content
    2. Используйте класс StreamReader
    1. Подсчитайте количество строк в файле
    2. Выберите конкретные номера строк в начале и в конце
    3. Файл постоянно обновляется

    Прочитать полное содержание

    Изображение 1: Как быстро и легко читать текстовые файлы в Powershell

    Если вы хотите прочитать все содержимое текстового файла, самый простой способ — использовать встроенную функцию Get-Content. Вот код, который позволяет это сделать:

    Get-Content C: logslog01012020.txt

    Изображение 2: Как быстро и легко читать текстовые файлы в Powershell

    Когда вы выполняете эту команду, содержимое этого файла будет отображаться на экране PowerShell ISE или командной строки, в зависимости от того, где вы выполняете.

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

    $ file_data = Get-Content C: logslog01012020.txt

    Теперь вы можете использовать эту переменную $ file_data для анализа или дальнейшей обработки.

    Прочтите отрывок из содержания

    Изображение 3: Как быстро и легко читать текстовые файлы в Powershell

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

    $ file_data = Get-Content C: logslog01012020.txt $ file_data | Select-Object -First 10

    Как показывает код, первые 10 строк будут храниться в переменных, а не весь контент. Вы можете отобразить содержимое этой переменной или использовать ее для дальнейшей обработки.

    Точно так же мы можем прочитать несколько последних строк:

    $ file_data = Get-Content C: logslog01012020.txt $ file_data | Выбрать объект -Последние 10

    Читать построчно

    Если вы хотите прочитать файл, чтобы понять его содержимое, вы должны делать это построчно, и хорошая новость в том, что это возможно с помощью PowerShell. На самом деле, есть 2 способа сделать это.

    Используйте Get-Content

    Функция Get-Content считывает каждую строку текста и сохраняет их как массив, где каждая строка является элементом массива. В приведенном выше примере статья использовала одну переменную для чтения всего содержимого.

    $ file_data = Get-Content C: logslog01012020.txt

    Если вывод этой переменной, вы можете увидеть, что это массив. Это означает, что вы можете выбирать определенные строки, используя индекс массива. Например, если вы хотите прочитать первую строку, просто введите:

    И эта команда покажет вам первую строку.

    Эта команда отобразит вторую строку (как и следующую строку).

    Используйте класс StreamReader

    Второй вариант — использовать класс .NET под названием StreamReader.

    $ stream_reader = новый объект System.IO.StreamReader

    Теперь у вас есть содержимое файла журнала в этой переменной $ stream_reader, и, поскольку он принадлежит классу StreamReader, вы можете использовать множество встроенных методов для получения нужного текста.

    Команда выведет весь контент на ваш экран, аналогично Get-Content.

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

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

    $ stream_reader = New-Object System.IO.StreamReader $ line_number = 1 while (($ current_line = $ stream_reader.ReadLine ()) -ne $ null)

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

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

    Найдите конкретный текст

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

    $ file_data = Get-Content C: logslog01012020.txt | Where-Object

    Приведенный выше код будет выводить строки со словом «ошибка» в нем. Здесь $ _ — это переменная, представляющая текущую строку содержимого, полученного из Get-Content.

    Помимо Where-Object, вы также можете использовать операторы match и regex, чтобы найти нужный текст.

    Дополнительные возможности с Get-Content

    Get-Content — очень гибкий командлет с множеством опций. Вот несколько вещей, которые вы можете с ним сделать.

    Подсчитайте количество строк в файле

    Возможно, вы захотите узнать количество строк, доступных в файле. Код для этого:

    $ file_data = Get-Content C: logslog01012020.txt | Мера-объект

    Выберите конкретные номера строк в начале и в конце

    Ранее вы узнали, как выбрать первые несколько строк или последние несколько строк с помощью командлета Select-Object. Вы также можете получить аналогичные результаты, используя некоторые методы, интегрированные с Get-Content.

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

    $ file_data = Get-Content C: logslog01012020.txt -TotalCount 3

    Эта команда вернет первые 3 строки из файла.

    $ file_data = Get-Content C: logslog01012020.txt -Tail 3

    Эта команда вернет последние 3 строки из файла.

    Файл постоянно обновляется

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

    $ file_data = Get-Content C: logslog01012020.txt -Tail 3 -Wait

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

    голоса
    Рейтинг статьи
Ссылка на основную публикацию