#!/bin/bash FROM="$1" OLD_FILE="$(mktemp)" NEW_FILE="$(mktemp)" declare -A old git show "$FROM:go.mod" \ | sed -n -e '6 { /require/ b x; :x { p; n; /)/ q; b x} }' > "$OLD_FILE" while IFS= read -r line; do x=( $line ) old[${x[0]}]=${x[1]} done < "$OLD_FILE" declare -A new cat go.mod \ | sed -n -e '6 { /require/ b x; :x { p; n; /)/ q; b x} }' > "$NEW_FILE" while IFS= read -r line; do x=( $line ) new[${x[0]}]=${x[1]} done < "$NEW_FILE" for index in ${!new[@]}; do if [[ -n $old[$index] ]] && [[ ${old[$index]} != ${new[$index]} ]]; then echo "- \`$index\` from ${old[$index]} to ${new[$index]}" fi done