Squeak.ru - шаблоны программирования

Perl-команда -pe

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

cd /usr/kplushome/entities/Standalone/config/webaccess/WebaccessServer/etc
(PATH=/usr/ucb:$PATH; ./checkall.sh;) | perl -pe "s,^,          ,g;"

Есть идеи, как это здесь работает?

Что еще больше сбивает с толку в приведенном выше заявлении, так это эта часть: "s,^, ,g;"

Любая помощь приветствуется. Дайте мне знать, если вам, ребята, нужна дополнительная информация. Спасибо!

05.11.2015


Ответы:


1

Он просто берет выражение, заданное флагом -e (в данном случае s,^, ,g), и выполняет его для каждой строки ввода, выводя измененную строку (то есть результат выражения) на вывод.

Само выражение называется регулярным выражением (или "регулярным выражением" или "регулярным выражением") и само по себе является областью изучения. Быстрый поиск в Google «учебник по регулярным выражениям» и «начало работы с регулярными выражениями» дает множество результатов, так что это может быть хорошим местом для начала.

Это выражение, s,^, ,g, добавляет десять пробелов к началу строки, и, как я уже говорил ранее, perl -p применяет его к каждой строке.

05.11.2015
  • Опция -e принимает всю программу (последовательность операторов), а не только выражение. s/// - это не регулярное выражение, это оператор подстановки (однако первая его часть - регулярное выражение: s/REGEX/REPLACEMENT/). 05.11.2015
  • Да, я мог бы объяснить много других вещей, которые не под силу новичку-программисту. 05.11.2015
  • Вы могли бы объяснить вещи, которые не являются неправильными. Кроме того, /g не имеет смысла с ^, и все это можно заменить на -e '$_ = " $_"' (здесь должно быть больше пробелов, но, видимо, комментарии отфильтровывают их) или -e '$_ = " " x 10 . $_', минуя весь беспорядок с регулярными выражениями. (Ваш код на самом деле добавляет 11 пробелов, несмотря на то, что в тексте утверждается обратное.) 05.11.2015
  • Это не мой код, это код ОП, я просто пытаюсь объяснить его так, чтобы он или она поняли. Потеряйте чип и опубликуйте свой собственный ответ, если вас не устраивают те, что здесь. Я буду счастлив придраться к ней до смерти и совершить ужасные логические ошибки, когда вы это сделаете. 05.11.2015
  • Код OP добавляет 10 пробелов. Тот, что в вашем ответе, добавляет 11. 05.11.2015
  • Должно быть, я неправильно скопировал и вставил (или вопрос был отредактирован после того, как я вставил и до подсчета). Я исправлю это. Отличный улов, Шерлок. 05.11.2015

  • 2
    "s,^,          ,g;"
    

    s используется для замены. синтаксис s/somestring/replacement/.
    В вашей команде , является разделителем вместо /.
    g предназначен для работы глобально, означает замену всех вхождений.

    Например:

    perl -p -i -e "s/oldstring/newstring/g" file.txt;
    

    В файле.txt все oldstring будут заменены на newstring.
    i предназначено для редактирования файла на месте.

    См. этот документ для получения информации:

    perlre
    perlretut
    perlop

    05.11.2015
  • Код не заменяет ^; ^ — это метасимвол регулярного выражения, означающий начало строки (и нет смысла использовать g с таким привязанным регулярным выражением). 05.11.2015
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...