我可以在我想要的字符串之前或之后 grep 一定数量的行吗? [复制]
Posted
技术标签:
【中文标题】我可以在我想要的字符串之前或之后 grep 一定数量的行吗? [复制]【英文标题】:Can I grep a certain amount of lines before or after a string I want? [duplicate] 【发布时间】:2019-01-07 02:12:27 【问题描述】:假设我正在使用 lshw 来获取系统内存,并且我希望将其打印出来,以便仅获取系统内存选项。你能指定在 grep 中的字符串之前或之后要打印多少行吗?下面输出一个 lshw 命令的 sn -p 供参考:
description: Computer
width: 64 bits
*-core
description: Motherboard
physical id: 0
*-memory
description: System memory
physical id: 0
size: 23GiB
*-cpu
product: Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz
vendor: Intel Corp.
physical id: 1
bus info: cpu@0
capacity: 1896MHz
width: 64 bits
我可以使用 lshw | grep size | awk -F: 'print $2'
获取 23 GiB 部分,但我想看看是否有办法使用 grep 获取文本块以获取完整内存部分。
【问题讨论】:
您在寻找-C
,例如grep -C 5
? C 用于上下文。您还可以在匹配后显式显示行 -B
efore 和 -A
。
在 grep 中使用 -A(之后)和 -B(之前)命令行选项。
或 -A 和 -B 进行精细控制。
@L3viathan 是的,你完全正确。非常感谢,我更改了我的帖子并记在你的名下。
【参考方案1】:
@L3viathan 帮我弄清楚了。 Grep 有一个 -A 标志,可让您指定字符串后面的行数。您还可以使用 -B 标志来指定字符串之前需要多少行。
后例:
lshw | grep *-memory -A 3
输出:
*-memory
description: System memory
physical id: 0
size: 23GiB
前例:
lshw | grep size -B 3
输出:
*-memory
description: System memory
physical id: 0
size: 23GiB
【讨论】:
以上是关于我可以在我想要的字符串之前或之后 grep 一定数量的行吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章