sum_preproc_online 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/bin/bash
  2. if [ $# -ne 2 ]; then
  3. echo "Usage: $0 <file1> <file2>"
  4. exit 1
  5. fi
  6. file1="$1"
  7. file2="$2"
  8. if [ ! -f "$file1" ] || [ ! -f "$file2" ]; then
  9. echo "Error: Both input files must exist."
  10. exit 1
  11. fi
  12. data1=()
  13. data2=()
  14. while read line; do
  15. if [[ "$line" == "BS Search"* ]]; then
  16. parts=($line)
  17. y="${parts[4]}"
  18. y_err="${parts[6]#±}"
  19. data1+=("$y,$y_err")
  20. fi
  21. done < "$file1"
  22. while read line; do
  23. if [[ "$line" == "BS Search"* ]]; then
  24. parts=($line)
  25. y="${parts[4]}"
  26. y_err="${parts[6]#±}"
  27. data2+=("$y,$y_err")
  28. fi
  29. done < "$file2"
  30. if [ ${#data1[@]} -ne ${#data2[@]} ]; then
  31. echo "Error: The two files do not have the same number of data points."
  32. exit 1
  33. fi
  34. echo "Data point y_sum y_err_sum"
  35. for i in "${!data1[@]}"; do
  36. IFS=',' read -ra data1_parts <<< "${data1[i]}"
  37. IFS=',' read -ra data2_parts <<< "${data2[i]}"
  38. y_sum=$(echo "${data1_parts[0]} + ${data2_parts[0]}" | bc -l)
  39. y_err_sum=$(echo "scale=4; sqrt(${data1_parts[1]}^2 + ${data2_parts[1]}^2)" | bc -l)
  40. echo "$((i+1)) $y_sum $y_err_sum"
  41. done