Comment

Comment by MicKillah

I am not sure how you may have gone about it but I was able to get this script, from ChatGPT4:

  #!/bin/bash
# Script to convert git diff output to a searchable format

# Check if a git repository if [ ! -d .git ]; then echo "This directory is not a git repository." exit 1 fi

# Filename for the output output_file="git_diff_searchable.txt"

# Empty the output file or create it if it doesn't exist > "$output_file"

# Process git diff output git diff --unified=0 | while read line; do # Check for filename line if [[ $line =~ ^diff ]]; then filename=$(echo $line | sed 's/diff --git a\/\(.\) b\/./\1/') elif [[ $line =~ ^@@ ]]; then # Extract line numbers line_numbers=$(echo $line | sed -E 's/@@ -[0-9]+(,[0-9]+)? \+([0-9]+)(,[0-9]+)? @@./\2/') else # Write filename and line number to the output file echo "$filename:$line_numbers: $line" >> "$output_file" fi done

echo "Output saved to $output_file"

I then ran the following egrep [corrected to egrep, after mistakenly putting that I used gawk] command egrep -e 'agent.rs:[0-9]{1,}' git_diff_searchable.txt* to see the results. Everything worked as I expected.

Now, I don't claim that this is what you intended to achieve but I prompted it with the context of what you asked: Write a script that converts git-diff output to a file that can be easily grepped by filename and linenumber.

parent MicKillah 2 years ago

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton