在grep中转义空格

时间:2012-08-24 16:51:09

标签: grep

tail /mnt/mysqld_log/mysql_error_log.err  | grep -e `date +'%y%m%d' --date='4 hour ago'` | more

120824 11:25:06 [ERROR] /usr/libexec/mysqld: Table '.zone_assoc' is marked as crashed and should be repaired
120824 18:03:23 [ERROR] /usr/libexec/mysqld: Incorrect key file for table '.ad_zone_assoc.MYI'; try to repair it
120824 18:08:38 [ERROR] /usr/libexec/mysqld: Incorrect key file for table '.ad_zone_assoc.MYI'; try to repair it

以上工作符合预期,并显示今天的日期结果。但以下情况不起作用。

tail /mnt/mysqld_log/mysql_error_log.err  | grep -e `date +'%y%m%d %k' --date='4 hour ago'` | more

grep: 18: No such file or directory

我试图逃离这个空间,这也没有用。

tail /mnt/mysqld_log/mysql_error_log.err  | grep -e `date +'%y%m%d\ %k' --date='4 hour ago'` | more

grep: Trailing backslash

1 个答案:

答案 0 :(得分:2)

您需要使用引号包装date命令:

tail /mnt/mysqld_log/mysql_error_log.err  | grep -e "`date +'%y%m%d %k' --date='4 hour ago'`" | more

该空间被解释为您尝试读取的文件,通过将其包含在引号中,这不会发生。