将grep与标志和管道运算符结合使用以过滤文件

时间:2018-11-01 01:40:02

标签: grep pipe

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

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

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

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

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

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

我正在寻找的结果应如下所示:

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

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

2 个答案:

答案 0 :(得分:0)

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

将获得所有Apple iPhone 7的

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

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

答案 1 :(得分:0)

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

grep苹果myfile -A2 | grep iPhone -C1 | 1 -B2

A2停留在-向我展示关键字之后的第二行,C1停留在-向我展示关键字前面的行和之后的行,-B2停留在给我展示关键字前面的两行。