我正在使用以下 sdiff 命令来获取两个文件的并排差异。列宽作为选项之一给出
sdiff -w170 /tmp/captureFile /tmp/referenceFile (或 diff -y )
如果我使用 -w 130 则删除一些字符。即使在下一行,它们也不会出现在输出中。他们失去了。
如果使用 -w 170 ,则由于左列中有多余的字符,右列会移动,由于屏幕宽度较小,因此在左列部分看到的字符很少。
那么是否有任何选项不剥离字符,然后在 sdiff 命令输出的同一列中的下一行?
我正在使用以下 sdiff 命令来获取两个文件的并排差异。列宽作为选项之一给出
sdiff -w170 /tmp/captureFile /tmp/referenceFile (或 diff -y )
如果我使用 -w 130 则删除一些字符。即使在下一行,它们也不会出现在输出中。他们失去了。
如果使用 -w 170 ,则由于左列中有多余的字符,右列会移动,由于屏幕宽度较小,因此在左列部分看到的字符很少。
那么是否有任何选项不剥离字符,然后在 sdiff 命令输出的同一列中的下一行?
您所看到的(显然)是相对于终端会话中的行长的行截断(-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
$