写一个shell脚本。依次检查当前目录及所有子目录下面的log文件,找到第一个包含555555的行,如果没有就不再检查当前文件。找到一个555555行后,检查此行到未见尾的所有行,如果某一行中出现Timing violation,记录当前行号。增加输出到文件check.log,输出内容包含文件路径以及出现Timing violation的行号,并且echo显示文件名+行号。注意每次输出check.log不是覆盖而是增加,check.log保存在当前目录。
时间: 2024-02-10 19:11:01 浏览: 150
以下是实现上述功能的shell脚本:
```bash
#!/bin/bash
find . -name "*.log" | while read log_file; do
echo "Checking $log_file..."
line_number=0
while IFS= read -r line; do
((line_number++))
if echo "$line" | grep -q "555555"; then
echo "Found 555555 in $log_file at line $line_number"
tail -n +$line_number "$log_file" | grep -q "Timing violation"
if [ $? -eq 0 ]; then
echo "Found Timing violation in $log_file at line $line_number"
echo "$log_file:$line_number" >> check.log
echo "$log_file:$line_number"
fi
break
fi
done < "$log_file"
done
```
脚本使用find命令查找当前目录及所有子目录下的log文件,并逐个检查文件中是否包含555555行。如果找到了555555行,则从该行开始逐行检查,如果某一行包含了"Timing violation",则记录当前行号,并将文件路径和行号输出到check.log文件中,并且在echo输出中也显示文件名和行号。注意,每次输出都是增加到check.log文件中,而不是覆盖。
阅读全文