none
Получение определённых данных из файла RRS feed

  • Вопрос

  • Добрый день.

    Подскажите пож-то, можно-ли с помощью powershell, вытащить из текстового файла данные между определёнными строками, которые имеют название Т.е. указать строку ниже которой нужно считывать данные и затем строку до которой это делать? 


    27 апреля 2022 г. 4:40

Ответы

  • $FirstString = 'Name'
    $LastString = 'fi-fi'
    $FilePath = 'C:\tmp\11.txt'
    if( (Get-Content $FilePath -Raw) -match "(?s)$($FirstString)(.*?)$($LastString)" ) { $Matches[1] }


    Грамотная постановка вопроса - уже 50% решения.
    SCCM User Group Russia в Telegram

    • Предложено в качестве ответа Vector BCOModerator 27 апреля 2022 г. 13:02
    • Помечено в качестве ответа Vector BCOModerator 27 апреля 2022 г. 13:02
    27 апреля 2022 г. 11:50

Все ответы

  • День добрый.

    можно:

    - воспользоваться регулярными выражениями,

    - в цикле перебирать строки

    - найти индекс начала и конца нужных строк и выбрать только их

    Можете привести пример файла и что из него надо достать? Желательно приложить сам файл - аттачем


    Грамотная постановка вопроса - уже 50% решения.
    SCCM User Group Russia в Telegram

    27 апреля 2022 г. 10:50
  • $FirstString = 'Name'
    $LastString = 'fi-fi'
    $FilePath = 'C:\tmp\11.txt'
    if( (Get-Content $FilePath -Raw) -match "(?s)$($FirstString)(.*?)$($LastString)" ) { $Matches[1] }


    Грамотная постановка вопроса - уже 50% решения.
    SCCM User Group Russia в Telegram

    • Предложено в качестве ответа Vector BCOModerator 27 апреля 2022 г. 13:02
    • Помечено в качестве ответа Vector BCOModerator 27 апреля 2022 г. 13:02
    27 апреля 2022 г. 11:50
  • День добрый.

    можно:

    - воспользоваться регулярными выражениями,

    - в цикле перебирать строки

    - найти индекс начала и конца нужных строк и выбрать только их

    Можете привести пример файла и что из него надо достать? Желательно приложить сам файл - аттачем


    Грамотная постановка вопроса - уже 50% решения.
    SCCM User Group Russia в Telegram

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

    Applied Group Policy Objects и The following GPOs were not applied because they were filtered out

      Domain Type:                        Windows 2008 or later

        Applied Group Policy Objects
        -----------------------------
            Guest_1        
            EventNotificat
            PSetting 
            NTLM
            CA Policy GP
            Default Domain Policy
            GP Refresh
            CA Untrusted Certs
            Local Group

        The following GPOs were not applied because they were filtered out
        -------------------------------------------------------------------
            RDP Session 5 min Limit
                Filtering:  Denied (Security)

    Я указал эти строки в скрипте, но получил ошибку:

    parsing "(?s)*Applied Group Policy Objects*(.*?)*The following GPOs were not applied because they were filtered out*" - Quantifier {x,y} following nothing.
    At line:4 char:68
    + ... $FilePath -Raw) -match "(?s)$($FirstString)(.*?)$($LastString)" ) { $ ...
    +                                                       ~~~~~~~~~~~
        + CategoryInfo          : OperationStopped: (:) [], ArgumentException
        + FullyQualifiedErrorId : System.ArgumentException


    28 апреля 2022 г. 3:35
  • Привет, Клумгер_Ташер,

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

    Простой и экономичный подход, подходящий для обработки больших входных файлов, заключается в объединении Get-Content с Select-Object. С помощью этих команд вы можете указать начальную линию и количество линий для захвата:

    Get-Content user.log | Выбрать-Объект -Пропустить 2 -Первый 1

    -Skip 2 указывает Select-Object пропустить первые 2 строки ввода, выводимые Get-Content.

    Таким образом, именно 3-я строка обрабатывается и выводится первой с помощью Select-Object, и
    -First 1 останавливает обработку сразу после этого, так что остальную часть файла не нужно читать.

    Надеюсь, это ответит на ваш вопрос.

    Спасибо.

    --Если ответ полезен, проголосуйте за него и примите как ответ--
    28 апреля 2022 г. 8:03