我正在尝试使用grep命令在大型日志文件中搜索从当前日期开始到服务器自动化应用程序的行,并且日志文件中写入的日期格式为“月日期”。
限制是我们在从该应用程序运行命令时不能在命令中使用双引号。
我尝试使用下面的命令grep该文件,但它没有工作,因为它在月份和日期之间用空格替换日期变量,并且由于grep将月份视为要搜索的单词并将日期作为文件处理。
grep `date +%b\ %d` filename
有人可以帮我解决这个问题,所以日期变量会被单引号替换,例如Oct 30
,所以grep可以把它当作单个词进行搜索吗?
请注意我们不能在整个命令中使用双引号。
答案 0 :(得分:2)
试试这个:
grep `date +%b[[:space:]]%d` filename
或
grep $(date +%b[[:space:]]%d) filename
答案 1 :(得分:0)
grep `date +%b.*%d` largelog.log
除非您在日志行中的任何位置之后有30个,否则此方法无效。
答案 2 :(得分:0)
您可以将IFS
设置为date
输出中未出现的字符;结肠应该足够了。在子shell中本地化更改以避免需要恢复以前的值。
(IFS=:; grep $(date +%b\ %d) file)