假设我写了这个脚本:
#print_time..
cat <file1.txt> | grep "*.log" | head -4 | tail -2 | helper | sort -r -n -k2
#helper..
while read line; do
linearr=($line)
(( time =${line[2]} - ${line[1]} +0 ))
echo ${line[o]} $time
done
两个问题:1)为什么第一个脚本只有当我这样写时才按预期工作:
cat `cat <file1.txt> | grep "*.log" | head -4 | tail -2` helper | sort -r -n -k2
2)我应该使用grep "*.log"
还是grep“.log”?
该脚本的作用:
给定一个 file1,当最后一个日志文件是给定 file1 中所有 .log 文件的编号 4 时,我们只想读取 2 个日志文件:示例:
我希望脚本的第一部分读取:tuesday.log 和 wednesday.log,然后计算姓名在日志文件中的每个人的每个日志时间:
这将被打印出来:
答案1
要回答您的问题,问题在于您对 的使用grep
。
Grep 将您输入的内容视为文字,因此如果您使用 grep *.log
,它会主动查找*
后面跟着的字符星号.log
,因此它不会找到任何内容。
作为一个快速测试,
该命令echo hello.log | grep "*.log"
不会返回任何内容
该命令echo hello.log | grep ".log"
将返回该行