Проблема с выводом разницы сторон при использовании 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
$
Другие вопросы по тегам