Diff between line numbers in files

Run a diff between ranges of line numbers in files.

Adjust the variables as needed.

Set file_1_name and file_2_name to the same value when comparing line ranges within the same file. Set file_1_name and file_2_name to the different file names when comparing line ranges in two different files.

file_1_name="util.py"
file_1_start=80
file_1_end=142

file_2_name="util.py"
file_2_start=144
file_2_end=229

The difference is piped into colordiff to colorize the output. The colorized output is piped to less as a pager with the -R option for the color escape sequences to be displayed correctly.

diff \
    --recursive \
    --unified \
    <(sed -n "${file_1_start}","${file_1_end}p" "${file_1_name}") \
    <(sed -n "${file_2_start}","${file_2_end}p" "${file_2_name}") | colordiff | less -R

Additional output if debugging withset -x is enabled:

+ colordiff
+ less -R
++ sed -n 80,142p util.py
+ diff --recursive --unified /dev/fd/63 /dev/fd/62
++ sed -n 144,229p util.py

kw: diff, file descriptor, process substitution, anonymous pipe

Comments

Leave a Reply