여러 로그 파일을 읽고 특정 문자열이 포함된 줄을 찾는 스크립트를 작성 중입니다. 그러나 파일을 egrep/grep하려고 하면 오류가 발생합니다.
읽고 싶은 로그 파일의 이름이 포함된 파일이 있습니다(아래 참조).
파일.txt
./code_a.log
./code_b.log
로그분석.ksh
#!/bin/ksh
platform=$1
lw_platform=$(echo "$platform" | tr '[:upper:]' '[:lower:]')
log_dir="/project/$lw_platform/logs/"
read_file="/user/LogAnalysis/files.txt"
out_file="/user/LogAnalysis/out3.txt"
echo $lw_platform
echo $log_dir
while -r line; do
echo "Began: $line" >> $out_file
cd ${log_dir}
echo $(pwd)
egrep -n 'ERROR:' $line >> $out_file
echo "End: $line" >> $out_file
done < $read_file
콘솔 출력
test
/project/test/logs/
/project/test/logs
.grep: 0652-033 Cannot open ./code_a.log
egrep
그러나 셸에서 동일한 명령을 직접 실행하면 이 오류가 발생하지 않습니다. 파일을 읽을 수 있는 권한이 있음을 증명하십시오.
답변1
파일을 dos 줄 끝에서 UNIX 형식으로 변환하여 문제를 해결했습니다. 다음 명령을 사용했습니다.
dos2unix files.txt