使用grep来搜索文本文档

问题描述:

我使用grep来搜索一个文档,并打印出一个特定的用户名和只有他们的时钟条目。我可以把它做到一个或另一个,但不是两个。一旦发现这两个词usernameclock in我需要打印每个条目的第一行(包含日期和时间)。使用grep来搜索文本文档

例如,记录的条目到文本的格式如下:

2014-10-05 21:01:00 
username 
CLOCK IN 

我一直在试图通过这个命令在过去的几个小时就搞定了,所以任何帮助,将不胜感激。

+0

提供一些示例输入和所需输出,以及您尝试的内容。否则,理解这个问题有点困难......并且你不会得到很多答案。 – fedorqui 2014-10-06 10:23:52

+0

对不起,如果我的消息很混乱。我想读取用户名,然后让程序查找该用户名和只有条目中的时钟,然后将输出打印到屏幕上。这是我现在有的,这是行不通的:阅读$ USERNAME grep“$ {USERNAME}”timeclock.txt | grep“CLOCK IN” – Chalmers 2014-10-07 00:50:15

+0

想通了!感谢所有的帮助。 'read $ USERNAME grep“$ {USERNAME}”timeclock.txt | grep -B2“CLOCK IN”' – Chalmers 2014-10-07 01:10:19

我认为你正在寻找这样的:

awk -v user="FreddyFrog" '/:/{t=$0} /^CLOCK IN/ && lus~user {print t} {lus=$0}' file 

所以,你通过你正在寻找作为user的名字 - 我已经将它设置为寻找FreddyFrog这里。该脚本然后查找带有冒号的行,并假定它们是时间,并将时间保存在变量t中。然后查找以CLOCK IN开头的行,如果找到,检查我们看过的最后一位用户是您正在查找的行 - 如果是,我们打印时间t。在所有其他行上,我们假设该行是一个用户名,并将其保存在一个变量lus中,我用它来表示last user seen

想通了! '读取$ USERNAME grep“$ {USERNAME}”timeclock.txt | grep -B2“CLOCK IN”'