首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >unix中使用sdiff的边差输出问题

unix中使用sdiff的边差输出问题
EN

Stack Overflow用户
提问于 2011-02-01 15:43:18
回答 2查看 6.1K关注 0票数 4

我使用下面的sdiff命令来获取两个文件的并列差异。列宽是其中一个选项

sdiff -w170 /tmp/captureFile /tmp/referenceFile (或diff -y )

如果我使用-w 130,那么一些字符会被剥离。即使在下一行,它们也不会出现在输出中。他们迷失了。

如果使用-w 170,则由于左列中的额外字符,右列被移位,并且由于屏幕宽度较小,所以在左列部分中看到的字符很少。

那么,有没有什么选项可以不去掉字符,然后在sdiff命令输出的同一列中的下一行上呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-09 06:48:35

您所看到的(显然)是相对于终端会话中的行长度的行截断(-w 130)或换行(-w 170)。我不相信有一个选项可以做你想做的事情。我经常使用sdiff &我倾向于使用支持改变字体大小的终端/CLI。

将字体缩小到仍然可读的位置,然后在可能的情况下最大化窗口。

我做的另一件事是在比较之前‘折叠’这两个文件,以获得更短的行长--这取决于你是在Linux上还是在Unix发行版上。但是fold应该在那里。

票数 5
EN

Stack Overflow用户

发布于 2022-02-14 17:00:52

这是我为实现@David Victor的建议而写的一个快速而肮脏的脚本:

代码语言:javascript
运行
复制
$ 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
$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4860084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档