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

dpkg --get-selections | xargs apt-cache policy {} | grep -1 Installed | sed -r 's/(:|Installed: |Candidate: )//' | uniq -u | tac | sed '/--/I,+1 d' | tac | sed '$d' | sed -n 1~2p

Что значит grep -1 ? Я не могу найти упоминания о -1 на справочной странице grep или где-либо еще в Интернете.

3 ответа3

4

Опция -1 - это традиционная опция стиля Unix, которая указывает, что вы хотите, чтобы grep включал 1 строку дополнительного текста в соответствии с контекстом.

Если вы выполните команду man grep и поищите заголовок Контроля строки контекста, вы обнаружите, что в приведенных ниже опциях будут описаны различные способы запроса дополнительных строк контекста. В частности, на ваш вопрос вы увидите:

    -C NUM, -NUM, --context=NUM
        Print NUM lines of output context.  Places a line  containing  a
        group separator (--) between contiguous groups of matches.  With
        the -o or --only-matching option,  this  has  no  effect  and  a
        warning is given.

это где -1 документируется (как -NUM где NUM равен 1), поэтому все следующие команды будут вести себя одинаково: grep -1 или grep -C 1 или grep --context=1

0

Мне удалось решить это, посмотрев на результаты. Он указывает, сколько предыдущих и последующих строк ("контекста") показывать для каждого совпадения. Таким образом, в данном конкретном случае grep будет показывать предыдущую и следующую строки для каждого совпадения, в дополнение к самой совпадающей строке.

0

Это ничего не называется grep -1 , если вы идете в терминал и grep --help вы не найдете grep -1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .