Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:12:17

0001 #!/bin/bash
0002 
0003 filename="$1"  # Path to the input text file
0004 
0005 # Check if the file exists
0006 if [ ! -f "$filename" ]; then
0007     echo "File $filename does not exist."
0008     exit 1
0009 fi
0010 
0011 # Array to store the first numbers from each column
0012 numbers=()
0013 
0014 # Read lines from the file
0015 while IFS= read -r line; do
0016     # Check if the line starts with "FEM Evt nr:"
0017     if [[ $line == "FEM Evt nr:"* ]]; then
0018         # Extract the first number from each column using awk
0019         first_number=$(echo "$line" | awk '{print $5}')
0020       #echo $first_number 
0021        # Check if the extracted number is not empty
0022         if [[ ! -z "$first_number" ]]; then
0023             # Add the number to the array
0024             numbers+=("$first_number")
0025         else
0026            numbers+=("-1")
0027                 #echo $first_number
0028            # echo "added"       
0029         fi
0030     fi
0031 done < "$filename"
0032 #echo $numbers
0033 declare -A count
0034 
0035 for num in "${numbers[@]}"; do
0036     ((count[$num]++))           
0037     #echo $num  
0038 done
0039 
0040 mode=""
0041 maxCount=0
0042 
0043 
0044 for num in "${!count[@]}"; do
0045        echo $num
0046     if ((count[$num] > maxCount)); then
0047         maxCount=${count[$num]}
0048         mode=$num
0049     fi
0050 done
0051 
0052 notEqualCount=0
0053 
0054 # Iterate over the numbers again to count the non-mode numbers
0055 for num in "${numbers[@]}"; do
0056     if [[ $num -ne $mode ]]; then
0057         ((notEqualCount++))
0058     fi
0059 done
0060 total=${#numbers[@]}
0061 percentage=$(bc <<< "scale=4; (($total - $notEqualCount) / $total)*100")
0062 
0063 
0064 
0065 # Calculate the mode of the numbers array using awk
0066 #mode=$(printf "%s\n" "${numbers[@]}" | awk 'NR==FNR{a[$1]++;next}a[$1] > max{max=a[$1];mode=$1}END{print mode}')
0067 
0068 echo "Mode: $mode"
0069 echo "Percentage: $percentage"
0070 
0071 notModeIndices=()
0072 
0073 for i in "${!numbers[@]}"; do
0074     if [[ ${numbers[i]} -ne $mode ]]; then
0075         notModeIndices+=("$i")
0076     fi
0077 done
0078 
0079 echo "Indices not equal to mode: ${notModeIndices[@]}"
0080 
0081 echo "Mode: $mode" >> "$filename"
0082 echo "Percentage: $percentage" >> "$filename"
0083 echo "Indices not equal to mode: ${notModeIndices[@]}" >> "$filename"