고양이만 하는 것과 파이핑만 하는 것의 차이점은 무엇인가요?

고양이만 하는 것과 파이핑만 하는 것의 차이점은 무엇인가요?

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

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

관련 정보