log.sh 472 B

1234567891011121314151617
  1. #!/bin/bash
  2. # 进入指定目录
  3. cd "/logs/$1"
  4. # 获取最新修改的文件
  5. latest_file=$(ls -t | head -n1)
  6. # 查找入参2所在行
  7. matching_line=$(grep -n "$2" "$latest_file" | head -n1)
  8. # 获取匹配行号和文件名
  9. line_number=$(echo "$matching_line" | cut -d ":" -f 1)
  10. # file_name=$(echo "$matching_line" | cut -d ":" -f 2)
  11. # 查找前30行和后200行数据
  12. awk -v start=$((line_number-30)) -v end=$((line_number+200)) 'NR>=start && NR<=end' "$latest_file"