我可以在想要的字符串之前或之后grep一定数量的行吗? [重复]
收藏

这个问题已经有了答案:
grep a file, but show several surrounding lines?
11个答案
假设我使用lshw来获取系统内存,我希望打印出来,这样我只能获得系统内存选项。可以在grep中指定要在字符串之前或之后打印多少行吗?下面输出lshw命令的片段以供参考:

 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}'来获取23gib部分,但我想看看是否有方法使用grep获取一个文本块以获得完整的内存部分。


最佳答案:

@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

    公众号
    关注公众号订阅更多技术干货!