Grep 问题(匹配同一行上的两个字符串)

Grep 问题(匹配同一行上的两个字符串)

这里有一些 grep 命令无法正常工作:

cat file1.txt:
apples
Date: Sun, 24 Feb 2013 8:14:06 -0800
peaches melons
cherry sky cloud
green purple
yellow

cat file2.txt:
apples
Date
peaches melons 0800
cherry sky cloud
green purple
black

现在损坏的命令是:

egrep -lir "apples|melons|cherry" /home/test/* | xargs grep -l "Date" | xargs grep -l "0800"

查看第一个参数:文件必须包含苹果或甜瓜或樱桃然后,第二个参数:同一文件必须在同一行包含“日期”和“0800”

因此 file1.txt 应该匹配但 file2.txt 不匹配 - 目前两者都匹配

感谢您的帮助 - 我认为我需要使用正则表达式的 grep 来匹配“Date:[any][any][any]0800”类型的命令来在同一行捕获“Date”和“0800”......

答案1

我想这就是你的意思。日期为零个或多个字符,后跟 0800

egrep -lir "apples|melons|cherry" file*.txt | xargs grep -l  "Date.*0800"

相关内容