Bash 猛击。Grep文本文件查找其他文件中的行
是否可以分析文本文件,比如说Bash 猛击。Grep文本文件查找其他文件中的行,bash,shell,grep,Bash,Shell,Grep,是否可以分析文本文件,比如说log.txt从另一个文件中查找行-比如说config.txt。我试着做以下事情: while read -r line; do if grep -q $line $log_path; then echo "Found line: $line" >> $out_log break else echo "Line not found: $line" >> $out_log fi done
log.txt
从另一个文件中查找行-比如说config.txt
。我试着做以下事情:
while read -r line;
do
if grep -q $line $log_path; then
echo "Found line: $line" >> $out_log
break
else echo "Line not found: $line" >> $out_log
fi
done < $conf_path
读取-r行时;
做
如果grep-q$line$log\u路径;然后
回显“找到行:$line”>>$out\u日志
打破
else echo“未找到行:$Line”>$out\u log
fi
完成<$conf_路径
$conf_path
是类似于/path/to/config.txt
$log\u path
是类似于/path/to/log.txt
$out\u log
是用于测试脚本是否正常工作的/path/to/output\u log.txt
示例$line
是“错误:消息:\[Library not found\!\]”
。我在脚本之外测试了grep指令,它正确地发现了这一行,所以我不认为grep是这里的问题。每次执行else
语句时
谢谢社区的建议
致以最良好的问候,Max请尝试下面的内容
代码:
while read -r line
do if grep -q "${line}" $log_path
then echo "Found line: $line" >> $out_log
else echo "Line not found: $line" >> $out_log
fi
done < $conf_path
bash-3.2$ echo $conf_path ; cat $conf_path
config.txt
ERROR: MESSAGE: \[Library not found \!\]
ERROR: MESSAGE: \[File not found \!\]
ERROR: MESSAGE: \[Path not found \!\]
ERROR: MESSAGE: \[Permission denied \!\]
bash-3.2$
bash-3.2$ echo $log_path; cat $log_path
log.txt
INFO: MESSAGE: Script Starts
INFO: MESSAGE: Some command output
ERROR: MESSAGE: [Library not found !]
INFO: MESSAGE: Some other command output
ERROR: MESSAGE: [Path not found !]
INFO: MESSAGE: Exit script with 2
bash-3.2$
bash-3.2$ while read -r line; do if grep -q "${line}" $log_path; then echo "Found line: $line" >> $out_log; else echo "Line not found: $line" >> $out_log; fi; done < $conf_path
bash-3.2$
bash-3.2$ echo $out_log; cat $out_log
output_log.txt
Found line: ERROR: MESSAGE: \[Library not found \!\]
Line not found: ERROR: MESSAGE: \[File not found \!\]
Found line: ERROR: MESSAGE: \[Path not found \!\]
Line not found: ERROR: MESSAGE: \[Permission denied \!\]
bash-3.2$
读取时-r行
如果grep-q“${line}”$log\u路径
然后回显“找到行:$line”>>$out\u log
else echo“未找到行:$Line”>$out\u log
fi
完成<$conf_路径
示例:
while read -r line
do if grep -q "${line}" $log_path
then echo "Found line: $line" >> $out_log
else echo "Line not found: $line" >> $out_log
fi
done < $conf_path
bash-3.2$ echo $conf_path ; cat $conf_path
config.txt
ERROR: MESSAGE: \[Library not found \!\]
ERROR: MESSAGE: \[File not found \!\]
ERROR: MESSAGE: \[Path not found \!\]
ERROR: MESSAGE: \[Permission denied \!\]
bash-3.2$
bash-3.2$ echo $log_path; cat $log_path
log.txt
INFO: MESSAGE: Script Starts
INFO: MESSAGE: Some command output
ERROR: MESSAGE: [Library not found !]
INFO: MESSAGE: Some other command output
ERROR: MESSAGE: [Path not found !]
INFO: MESSAGE: Exit script with 2
bash-3.2$
bash-3.2$ while read -r line; do if grep -q "${line}" $log_path; then echo "Found line: $line" >> $out_log; else echo "Line not found: $line" >> $out_log; fi; done < $conf_path
bash-3.2$
bash-3.2$ echo $out_log; cat $out_log
output_log.txt
Found line: ERROR: MESSAGE: \[Library not found \!\]
Line not found: ERROR: MESSAGE: \[File not found \!\]
Found line: ERROR: MESSAGE: \[Path not found \!\]
Line not found: ERROR: MESSAGE: \[Permission denied \!\]
bash-3.2$
bash-3.2$echo$conf_路径;cat$conf_路径
config.txt
错误:消息:\[找不到库\!\]
错误:消息:\[未找到文件\!\]
错误:消息:\[未找到路径\!\]
错误:消息:\[权限被拒绝\!\]
bash-3.2美元
bash-3.2$echo$log\u路径;cat$log\U路径
log.txt
信息:消息:脚本启动
信息:消息:一些命令输出
错误:消息:[找不到库!]
信息:消息:其他一些命令输出
错误:消息:[未找到路径!]
信息:消息:使用2退出脚本
bash-3.2美元
bash-3.2$while read-r行;如果grep-q“${line}”$log\u路径;然后回显“找到行:$line”>>$out\u log;else echo“未找到行:$Line”>>$out\u log;fi;完成<$conf_路径
bash-3.2美元
bash-3.2$echo$out\u log;cat$out_日志
输出\u log.txt
找到行:错误:消息:\[找不到库\!\]
未找到行:错误:消息:\[未找到文件\!\]
找到行:错误:消息:\[未找到路径\!\]
未找到行:错误:消息:\[权限被拒绝\!\]
bash-3.2美元
希望这有帮助。祝你好运 试试下面
代码:
while read -r line
do if grep -q "${line}" $log_path
then echo "Found line: $line" >> $out_log
else echo "Line not found: $line" >> $out_log
fi
done < $conf_path
bash-3.2$ echo $conf_path ; cat $conf_path
config.txt
ERROR: MESSAGE: \[Library not found \!\]
ERROR: MESSAGE: \[File not found \!\]
ERROR: MESSAGE: \[Path not found \!\]
ERROR: MESSAGE: \[Permission denied \!\]
bash-3.2$
bash-3.2$ echo $log_path; cat $log_path
log.txt
INFO: MESSAGE: Script Starts
INFO: MESSAGE: Some command output
ERROR: MESSAGE: [Library not found !]
INFO: MESSAGE: Some other command output
ERROR: MESSAGE: [Path not found !]
INFO: MESSAGE: Exit script with 2
bash-3.2$
bash-3.2$ while read -r line; do if grep -q "${line}" $log_path; then echo "Found line: $line" >> $out_log; else echo "Line not found: $line" >> $out_log; fi; done < $conf_path
bash-3.2$
bash-3.2$ echo $out_log; cat $out_log
output_log.txt
Found line: ERROR: MESSAGE: \[Library not found \!\]
Line not found: ERROR: MESSAGE: \[File not found \!\]
Found line: ERROR: MESSAGE: \[Path not found \!\]
Line not found: ERROR: MESSAGE: \[Permission denied \!\]
bash-3.2$
读取时-r行
如果grep-q“${line}”$log\u路径
然后回显“找到行:$line”>>$out\u log
else echo“未找到行:$Line”>$out\u log
fi
完成<$conf_路径
示例:
while read -r line
do if grep -q "${line}" $log_path
then echo "Found line: $line" >> $out_log
else echo "Line not found: $line" >> $out_log
fi
done < $conf_path
bash-3.2$ echo $conf_path ; cat $conf_path
config.txt
ERROR: MESSAGE: \[Library not found \!\]
ERROR: MESSAGE: \[File not found \!\]
ERROR: MESSAGE: \[Path not found \!\]
ERROR: MESSAGE: \[Permission denied \!\]
bash-3.2$
bash-3.2$ echo $log_path; cat $log_path
log.txt
INFO: MESSAGE: Script Starts
INFO: MESSAGE: Some command output
ERROR: MESSAGE: [Library not found !]
INFO: MESSAGE: Some other command output
ERROR: MESSAGE: [Path not found !]
INFO: MESSAGE: Exit script with 2
bash-3.2$
bash-3.2$ while read -r line; do if grep -q "${line}" $log_path; then echo "Found line: $line" >> $out_log; else echo "Line not found: $line" >> $out_log; fi; done < $conf_path
bash-3.2$
bash-3.2$ echo $out_log; cat $out_log
output_log.txt
Found line: ERROR: MESSAGE: \[Library not found \!\]
Line not found: ERROR: MESSAGE: \[File not found \!\]
Found line: ERROR: MESSAGE: \[Path not found \!\]
Line not found: ERROR: MESSAGE: \[Permission denied \!\]
bash-3.2$
bash-3.2$echo$conf_路径;cat$conf_路径
config.txt
错误:消息:\[找不到库\!\]
错误:消息:\[未找到文件\!\]
错误:消息:\[未找到路径\!\]
错误:消息:\[权限被拒绝\!\]
bash-3.2美元
bash-3.2$echo$log\u路径;cat$log\U路径
log.txt
信息:消息:脚本启动
信息:消息:一些命令输出
错误:消息:[找不到库!]
信息:消息:其他一些命令输出
错误:消息:[未找到路径!]
信息:消息:使用2退出脚本
bash-3.2美元
bash-3.2$while read-r行;如果grep-q“${line}”$log\u路径;然后回显“找到行:$line”>>$out\u log;else echo“未找到行:$Line”>>$out\u log;fi;完成<$conf_路径
bash-3.2美元
bash-3.2$echo$out\u log;cat$out_日志
输出\u log.txt
找到行:错误:消息:\[找不到库\!\]
未找到行:错误:消息:\[未找到文件\!\]
找到行:错误:消息:\[未找到路径\!\]
未找到行:错误:消息:\[权限被拒绝\!\]
bash-3.2美元
希望这有帮助。祝你好运 那么,在您当前的脚本中有什么不起作用,错误消息是什么?我真的不知道。似乎我的grep条件总是返回false,因此总是调用
else
语句。但是我尝试使用非常相似的grep,它返回了find行。请您提供一个最小的可复制示例,其中包含一些导致脚本失败的数据,因为在尝试时它对我有效:“break”意味着在第一次成功查找后停止循环。如果替换为“continue”,循环将读取$conf_path中的下一行。另外,尝试替换为grep-q“${line}”“${log_path}”下一行,那么在当前脚本中有什么不起作用,错误消息是什么?我真的不知道。似乎我的grep条件总是返回false,因此总是调用else
语句。但是我尝试使用非常相似的grep,它返回了find行。请您提供一个最小的可复制示例,其中包含一些导致脚本失败的数据,因为在尝试时它对我有效:“break”意味着在第一次成功查找后停止循环。如果替换为“continue”,循环将从$conf_path读取下一行。另外,尝试替换为下面的grep-q“${line}”“${log_path}”“${line}”
这是正确工作的关键。谢谢你,先生“${line}”这是正确工作的关键。谢谢你,先生