我使用下面的sdiff命令来获取两个文件的并列差异。列宽是其中一个选项
sdiff -w170 /tmp/captureFile /tmp/referenceFile (或diff -y )
如果我使用-w 130,那么一些字符会被剥离。即使在下一行,它们也不会出现在输出中。他们迷失了。
如果使用-w 170,则由于左列中的额外字符,右列被移位,并且由于屏幕宽度较小,所以在左列部分中看到的字符很少。
那么,有没有什么选项可以不去掉字符,然后在sdiff命令输出的同一列中的下一行上呢?
发布于 2011-02-09 06:48:35
您所看到的(显然)是相对于终端会话中的行长度的行截断(-w 130)或换行(-w 170)。我不相信有一个选项可以做你想做的事情。我经常使用sdiff &我倾向于使用支持改变字体大小的终端/CLI。
将字体缩小到仍然可读的位置,然后在可能的情况下最大化窗口。
我做的另一件事是在比较之前‘折叠’这两个文件,以获得更短的行长--这取决于你是在Linux上还是在Unix发行版上。但是fold应该在那里。
发布于 2022-02-14 17:00:52
这是我为实现@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
$
https://stackoverflow.com/questions/4860084
复制相似问题