文件是这样的:
20180203235900 DEFAULT, Proc_m0_s1
20180203235900 DEFAULT, Proc_m0_s17
20180203235900 DEFAULT, Proc_m0_s19
20180203235900 DEFAULT, Proc_m0_s3
20180203235900 DEFAULT, Proc_m0_s5
20180203235900 DEFAULT, Proc_m0_s7
20180203235900 DEFAULT, Proc_m1_s11
20180203235900 DEFAULT, Proc_m1_s13
20180204200000 DEFAULT, Proc_m0_s1
20180204200000 DEFAULT, Proc_m0_s17
20180204200000 DEFAULT, Proc_m0_s19
20180204200000 DEFAULT, Proc_m0_s3
20180204200000 DEFAULT, Proc_m0_s5
20180204200000 DEFAULT, Proc_m0_s7
20180204200000 DEFAULT, Proc_m1_s11
20180204200000 DEFAULT, Proc_m1_s13
我正在使用
DATE=`eval date +%Y%m%d`
grep -e $DATE* -e DEFAULT* file.txt > fileoutput.txt
答案 0 :(得分:1)
这里不需要eval
,因为反引号已经评估了它们所包含的表达式。
如果要将带星号的表达式传递给grep
之类的命令,则必须引用表达式(例如grep -r "$DATE*" …
)。如果希望解释变量,请记住使用双引号。
实际上,在这种情况下你根本不需要星号,因为grep无论如何都应该匹配。
对您有用的是:
mydate=$(date +%Y%m%d)
grep -e $mydate -e DEFAULT file.txt > fileoutput.txt
(注意:我更喜欢用小写字母拼写局部变量,因为可读性,我使用$()
代替反引号。)