我正在尝试理解以下 shell 命令,以获取可以更新的软件包列表:
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
意思?我在 grep 的手册页中找不到任何提及-1
,甚至在互联网上的任何地方也找不到。
答案1
该-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
答案2
我通过查看结果设法解决了这个问题。它指定了每个匹配项显示多少行(“上下文”)的前一行和后一行。因此,在这个特定情况下,grep 除了显示匹配行本身之外,还会显示每个匹配项的前一行和后一行。
答案3
这没什么好说的grep -1
,如果你去终端输入grep --help
你找不到grep -1