grep 可以只输出指定的分组行匹配吗?

grep 可以只输出指定的分组行匹配吗?

我只想输出整行,而不仅仅是匹配单词

文件.txt

 Name   Surname   Class   Best-Lesson
1.Nick   Fras      Mat     Chemic
2.Cris   Fras      Chemic  Mat
3.Dani   Cris      Philos  Physical
4.Quar   Qand      Dani    Cris

我想要这个,全线

grep parameters Dani Chris
output: 3.Dani Cris    Philos   Physical

我不想要这个(带-o)

Dani Cris

答案1

根据OP的评论,这个grep应该能够产生OP想要的结果:

grep -iE "^[[:digit:]]\.Dani\s{0,}C[h]*ris" input.txt | xargs echo "output:"

或者使用agep我的 Ubuntu 系统上不存在的命令,因此已安装:

agrep -1 '[0-9]\.Dani#Chris' input.txt | xargs echo "output:"

结果:

output: 3.Dani Cris Philos Physical

信息:

  • [[:digit:]]\., :从输入文件中[0-9]\.选取部分3.
  • Dani\s{0,}, Dani#Chris: 获取名称后带有任意数量空格的 tex Dani
  • C[h]*ris: 捕获CrisChris
  • | xargs echo "Output:":点到 xargs 并Output:在结果前添加文本

答案2

我们也可以通过 sed、awk 和 grep 来完成此操作。

方法1 使用sed

sed -n '/Dani/p’ example.txt | sed -n '/Dani/p’

方法2 使用awk

awk '$0 ~ "Dani" && $0 ~ "Cris" {print $0}’ example.txt

方法3 使用grep

grep 'Dani' example.txt  | grep ' Cris'

输出

3.Dani   Cris      Philos  Physical

相关内容