This page was exported from Furor Teutonicus [ https://www.furorteutonicus.eu ]
Export date: Fri Oct 23 9:01:32 2020 / +0000 GMT

diffplus: zie snel verschillen tussen tekstversies


Doelgroep: *nix gebruikers, liefhebbers van de command line, informatici en andere technisch georiƫnteerde computergebruikers.

wdiff | colordiff


Soms wil je snel even de verschillen zien tussen twee tekstbestanden. Mogelijk heb je een configuratiebestand aangepast, en wil je de verschillen met een oude versie uit de backup bekijken. Of misschien werk je aan een paper en wil je jouw docent inzichtelijk maken welke veranderingen je hebt aangebracht. Er bestaan heel wat "difference" tools, waaronder voor de GUI vriendelijke programma's zoals WinMerge (opvolger van WinDiff) en Kompare. Voor de opdrachtregel of CLI omgeving (command line interface) zijn er diff, wdiff, colordiff, enzovoorts. Hoe je die slim kunt gebruiken staat op WebWereld.

Ik heb een eigen script diffplus.sh geschreven om gemakkelijker gebruik te kunnen maken van de goede CLI tools. Daarbij gebruik ik ook aha om ANSI kleurcodes naar HTML CSS om te kunnen zetten. Met mijn script kun je kiezen of je de uitvoer in less wilt zien, of in de text-based browser elinks, of dat je het wilt exporteren naar een HTML bestand. Het script kun je downloaden (diffplus.zip) of hieronder bekijken.

Hieronder een voorbeeld van diffplus.sh 1.txt 2.txt met de HTML uitvoer optie.














Dit is tekst nummer een.
De eerste regel zegt niet veel.
De tweede ook niet.


Dit is tekst nummer twee.
De eerste regel zegt niet zo heel veel.
De tweede ook niet.
De derde is scheepsrecht.


Dit is tekst nummer [-een.-] {+twee.+}
De eerste regel zegt niet {+zo heel+} veel.
De tweede ook niet.
{+De derde is scheepsrecht.+}


De uitvoer lijkt me duidelijk genoeg. Hopelijk heb je er iets aan. Hieronder de broncode van het script.

#!/bin/sh
#
# Shows nice diff output, colorized.
# Evert Mouw , 2011-09-[20,23]
#
# inspiration (Dutch):
# http://webwereld.nl/tips-en-tools/107978/diff-voor-gevorderden.html
#
# aha converts ansi color codes to html [http://ziz.delphigl.com/tool_aha.php]
# an alternative could be: ansi2html.sh [http://www.pixelbeat.org/docs/terminal_colours/]
#
# execute a variable as a command can be done with $cmd,
# but sometimes you need eval: http://fvue.nl/wiki/Bash:_Why_use_eval_with_variable_expansion%3F
#
# testing for available commands with hash:
# http://stackoverflow.com/questions/592620/check-if-a-program-exists-from-a-bash-script

if [ -z $1 ]; then
echo $(basename $0) helps with selecting diff utilities to see differences between text files.
echo Usage: $(basename $0) file1 file2 [menu_selection]
echo The script is intended for interactive use, echo but you can give the menu
echo selection number as a third argument.
exit 0
fi

if [ ! -f "$1" ]; then echo "I need two files to compare."; exit 1; fi
if [ ! -f "$2" ]; then echo "I need a second file to compare with."; exit 1; fi

for util in vimdiff wdiff colordiff aha less elinks; do
hash $util 2>&- || { echo >&2 "I require $util but it's not installed."; abort="1"; }
done
if [ $abort ]; then exit 1; fi

S1="wdiff -n "$1" "$2" | colordiff"

if [ -z $3 ]; then
echo "How do you want the diff?"
echo " 0. cancel / exit"
echo " 1. piped to less -R"
echo " 2. piped to elinks"
echo " 3. exported to "$1_diff.html""
echo " 4. view or edit with vimdiff"
read choice
else
choice=$3
fi

case "$choice" in
0) exit 0;;
1) S2="| less -R";;
2) S2="| aha | elinks -eval 'set mime.default_type = "text/html"'";;
3) S2="| aha > $0_output.html";;
4) S1="vimdiff "$1" "$2""; S2="";;
*) echo "Invalid input, exiting."; exit 1;;
esac

cmd="$S1 $S2"
echo Executing: $cmd
eval $cmd

exit 0

 
Excerpt: Gebruik slimme unix tools om verschillen tussen tekstbestanden te vinden. Handig als je meerdere versies van een tekst hebt.
Post date: 2011-09-20 16:16:59
Post date GMT: 2011-09-20 15:16:59
Post modified date: 2013-08-05 10:25:21
Post modified date GMT: 2013-08-05 09:25:21
Powered by [ Universal Post Manager ] plugin. HTML saving format developed by gVectors Team www.gVectors.com