Как показать Страницу справочника из файла?

Если Вы не должны передавать аргументы команде затем #!/usr/bin/env gawk путь состоит в том, чтобы пойти, однако много ядер (включая Linux) только принимают отдельный аргумент к программам хижины.

Иначе можно сделать многоязычную программу, которая является и оберткой оболочки и awk сценарием. Вот один для awk.

#!/bin/sh
true + /; exec gawk -f "$0"; exit; / {}
# awk script starts here

Парсинг Shell:

  • true + /; — команда true (который ничего не делает) с двумя инертными аргументами + и /.
  • Вызов к gawk. Это могло быть любым отрывком оболочки, который не содержит новые строки и где наклонные черты записаны \/ (оболочка не возражает кроме внутренних кавычек).
    Использование вызова exec заменять оболочку простофилей вместо того, чтобы выполнить простофилю как подпроцесс.
  • exit; — выйдите из оболочки, в случае, если простофиля не была найдена. Что-либо после этого проигнорировано, за исключением того, что это должен быть допустимый синтаксис оболочки в случае, если оболочка пытается проанализировать целую строку прежде, чем начать выполнять его.

Парсинг Awk:

  • Бит между наклонными чертами является регулярным выражением.
  • true + /REGEX/ — условие. true неопределенная переменная, таким образом, ее числовое значение 0, не, что она имеет значение.
  • {} — Если упомянутое условие содержит, ничего не сделайте.

3
21.12.2014, 15:41
1 ответ

Это несколько вопросов, поэтому давайте начнем с начала:

  1. Не знаю, почему инструкции для Python 2.6 от 2012 года кажутся простейшими, но в целом следует:

    • установить с помощью диспетчера пакетов, например, на Debian/Ubuntu sudo apt-get install python-lzma (это бэкпорт стандартного модуля lzma, появившегося в Python3.3)
    • или установить из PyPI с помощью pip (который должен быть установлен только один раз):

       sudo apt-
      pip установка pylzma
      

    Оба эти метода позволяют удалить установку, что-то, начиная со смолы, не гарантирует. Использование pip обычно предоставляет более актуальный пакет, но не может обрабатывать зависимости системной библиотеки (поэтому может потребоваться установить пакет liblzma5 , если он еще не установлен.

  2. Обычно bytecompile не выполняется явно, самое позднее при первом использовании, или во время установки. Но python работает нормально с файлами .py , даже если он не может записать файл .pyc при первом использовании (он просто начинается медленнее).

  3. Интересно, почему импорт питона по подсказке питона не дает ошибки. В моей системе это так, так как нет файла python.py . Чтобы проверить наличие pylzma, следуйте инструкциям на устаревшей странице по адресу:

     > > import pylzma
    > > > импорт py7zlib
    

С помощью pip я получил версию 0,4,6 привязок Игоря Павлова

-121--146028-

Нет, это неправильно. Я понятия не имею, что такое \1 {3} , но именно это вызывает у вас проблемы. Если нужно найти строки, содержащие три повторяющихся символа, а затем три других повторяющихся символа, можно использовать следующую команду:

grep -E '([a-z])\1{2}([a-z])\2{2}'

\1 относится к первой захваченной группе. Можно захватывать группы, используя круглые скобки. Затем \1 является первой такой группой, а \2 - второй и т.д. Поскольку у вас не было захваченных групп, grep жаловался на недопустимую ссылку, так как ее не на что ссылаться. Так, в приведенном выше регексе скобки фиксируют две группы. Затем требуется {2} , а не {3} , так как также подсчитывается начальное совпадение.

Вы не указываете, должно ли совпадение быть словом, или вы также хотите совпадать в словах. Если вы хотите, чтобы все слово соответствовало (и исключить вещи, как aaaabbb , используйте это вместо:

grep -wE '([a-z])\1{2}([a-z])\2{2}'

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

grep -owE '([a-z])\1{2}([a-z])\2{2}'
-121--48943-

Неважно; Это просто человек ./file_name.

3
27.01.2020, 21:23

Теги

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