我只想输出整行,而不仅仅是匹配单词
文件.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 DaniC[h]*ris
: 捕获Cris
或Chris
| 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