고양이가 되는 것과 그냥 파이프가 되는 것의 차이점은 무엇입니까?

고양이가 되는 것과 그냥 파이프가 되는 것의 차이점은 무엇입니까?

제가 다음 스크립트를 작성했다고 가정해 보겠습니다.

#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"".log"를 사용해야 합니까, 아니면 grep을 사용해야 합니까?

이 스크립트의 기능은 다음과 같습니다.

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"다음 줄을 반환합니다.

관련 정보