我正在编写一个脚本来读取多个日志文件并查找具有特定字符串的行。但是,当我尝试对文件进行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
但是,如果我直接在 shell 中运行相同的命令,则不会收到此错误。证明我有读取该文件的权限。
答案1
我通过将文件从 dos 行结尾转换为 UNIX 格式解决了这个问题。我使用了以下命令。
dos2unix files.txt