【问题标题】:Combine grep with flags and pipe operator to filter a file结合 grep 与标志和管道运算符来过滤文件
【发布时间】:2019-04-05 06:07:36
【问题描述】:

我有一个文件(智能手机),其中包含不同的智能手机:

品牌:苹果 类型:iPhone 7 颜色:银色 年:2

品牌:苹果 类型:iPhone 7 颜色:金色 年数:3

品牌:苹果 类型:iPhone 8 颜色:银色 年:1

品牌:苹果 类型:iPhone 7 颜色:银色 年:1

如果我想将 grep 与标志和管道运算符结合起来过滤研究,我如何使用多个关键字搜索我正在寻找的智能手机?

我正在寻找的结果应该是这样的:

品牌:苹果 类型:iPhone 7 颜色:银色 年:1

我尝试了不同的方法,也尝试了 -e 标志,但我得到的是不同的行,所有结果都与我的关键字匹配,而不仅仅是一部智能手机与我的所有关键字匹配。

【问题讨论】:

    标签: grep pipe


    【解决方案1】:

    cat <your_file_name_here> | grep 'Brand: Apple' | grep 'Type: iPhone 7'

    将获得所有 Apple iPhone 7

    您可以添加| grep 'Color: Silver' 以获得所有银色 iPhone 7s。

    请注意,这假设始终存在 key: value - 如果可能有不同数量的空格等,那么您需要做一些更聪明的事情。

    【讨论】:

    • 当我这样做时,它没有给我任何输出
    • 从比cat yourfile | grep 'Brand' 更简单的东西开始 - 应该让每一行都正确吗?那么试试cat yourfile | grep 'Brand' | grep 'Apple' 那应该可以减少你的行数吧?所以添加更多| grep 'Gold'
    • 如果我做猫文件 | grep "Apple" - 它给了我这个: Brand: Apple Brand: Apple Brand: Apple 如果我添加第二个关键字,那么它根本不会给我任何输出。
    【解决方案2】:

    我得到了解决方案。我必须使用标志来显示关键字前后的行:

    grep Apple myfile -A2 | grep iPhone -C1 | 1-B2

    A2 停留在哪里 - 显示关键字之后的下两行,C1 停留 - 显示关键字之前和之后的行,-B2 停留在关键字之前的两行。

    【讨论】:

      猜你喜欢
      • 2021-09-18
      • 2019-07-15
      • 2016-01-12
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      相关资源
      最近更新 更多