Что делает `grep -1`?

986
Sod Almighty

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

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 или где-либо еще в Интернете.

0
Будет ли это `grep --count`? Prasanna 8 лет назад 0

3 ответа на вопрос

4
quizdog

эта -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
Sod Almighty

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

Вы имели в виду это? http://imgur.com/GcNVkDr Prasanna 8 лет назад 0
В справочной странице и сообщении об использовании отображается как `-NUM` и [информация] (http://www.gnu.org/software/grep/manual/grep.html#Context-Line-Control) как` -num`. dave_thompson_085 8 лет назад 0
0
manjesh23

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

Вы найдете `-NUM`. Так что этот ответ неверен. DavidPostill 8 лет назад 0
Извините за вопрос, позвольте мне получить это прямо. grep -1 - вопрос да, но grep -NUM доступен, а не -1, верно? manjesh23 8 лет назад 0
`NUM` можно заменить любым числом, поэтому вам разрешено использовать` -1`, `-2`,` -3` ... см. Другие правильные ответы. DavidPostill 8 лет назад 0
Понятно, я никогда не использовал команду grep, поэтому man grep получил это. Большое спасибо за объяснение. manjesh23 8 лет назад 0

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