Проблема с выводом разницы сторон при использовании sdiff в unix
Я использую следующую команду sdiff, чтобы получить параллельное различие двух файлов. Ширина столбца указана в качестве одного из вариантов
sdiff -w170 /tmp/captureFile /tmp/referenceFile (или diff -y)
если я использую -w 130, то некоторые символы удаляются. Они не появляются в выводе даже на следующей строке. Они потеряны.
И если используется -w 170, то из-за лишних символов в левом столбце правый столбец смещается, и поэтому в левой части столбца видны лишь немногие его символы из-за меньшей ширины экрана.
Так есть ли возможность не удалять символы и располагать их на следующей строке в том же столбце вывода команды sdiff?
2 ответа
То, что вы видите (очевидно), это либо усечение строки (-w 130), либо перенос строки (-w 170) относительно длины строки в вашем терминальном сеансе. Я не верю, что есть возможность делать то, что вы хотите. Я много использовал sdiff и склонен использовать терминал /CLI, который поддерживает изменение размеров шрифта.
Сократите шрифт до чего-то еще читаемого и затем разверните окно по возможности.
Что-то еще, что я сделал, это "свернул" два файла перед сравнением, чтобы иметь более короткую длину строки - это зависит от того, используете ли вы Linux или какой-нибудь дистрибутив Unix. но складка должна быть там.
Вот быстрый и грязный сценарий, который я написал для реализации предложения @David Victor:
$ cat SDIFF
if [ ! -n "${COLUMNS}" ]
then
echo COLUMNS is not exported !!!
echo run :
echo export COLUMNS
exit 1
fi
if [ ! -f "$1" -o ! -f "$2" ]
then
echo usage: $0 file1 file2
exit 1
fi
H=$(((${COLUMNS} - 3) / 2))
F1=$(mktemp)
F2=$(mktemp)
trap "rm $F1 $F2" 0
fold -s -w $H $1 > $F1
fold -s -w $H $2 > $F2
sdiff -w ${COLUMNS} $F1 $F2 | less
$