a p*_*erd 1 linux unix command-line
我想在 Linux 的命令行上显示带有上下文的文件的某一行或几行,有点像统一的差异:
$ (something) -l 154 stuff.py
150: def foo(bar):
151: """
152: Does the thing.
153: """
>> 154: x = some_calculation()
155: y = something_else()
156: x.baz(y)
157: return x.quux()
Run Code Online (Sandbox Code Playgroud)
是否有捷径可寻?
通常,当我在 grep 中搜索某些内容时,我会打开上下文选项 (-C)。因此,如果您想要基于搜索关键字的上下文,您可以这样做:
grep -C3 searchpattern file
Run Code Online (Sandbox Code Playgroud)
这将为您提供 3 行以上和 3 行以下的上下文。根据需要增加/减少。您还可以使用 -A 数字(上图)和 -B 数字(下图)在上方和下方显示特定数量。如果您想专门按行号执行此操作,可以尝试使用 nl 命令对行进行编号,然后根据匹配的编号使用 grep -C3。例如获取第 26 行:
nl -n ln -ba inputfile | grep -C3 "^26 "
Run Code Online (Sandbox Code Playgroud)
不过它有点棘手,因为您必须将这些格式选项传递给 nl 才能使其不将制表符和内容放入编号格式。grep 也有一个行编号选项(-n),你可以像这样通过 grep 两次传递内容,首先匹配任何内容(双双引号),然后是行号:
grep -n "" inputfile | grep -C3 "^26:"
Run Code Online (Sandbox Code Playgroud)
只需确保在正则表达式中使用一些上下文来匹配行号,这样就不会匹配 126 或 260 等内容。
归档时间: |
|
查看次数: |
567 次 |
最近记录: |