제가 다음 스크립트를 작성했다고 가정해 보겠습니다.
#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"
다음 줄을 반환합니다.