做猫和只做管道有什么区别

做猫和只做管道有什么区别

假设我写了这个脚本:

#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"将返回该行

相关内容