我有一个文件,其中的行几乎相同,但有一些细微的差异,我想突出显示每行之间的差异。
例子:
- 敏捷的棕色狐狸跳过了懒狗。
- 曲ACK棕色的狐狸跳跃越过那只懒狗。
- 嘎嘎狐狸跳了出来v呃非常懒狗。
- 嘎嘎狐狸跃过真的非常懒的狗。
(此处粗体文本标记与上一行相比已插入和更改的字符,斜体标记在下一行中删除的字符)。
突出显示不需要看起来与示例中完全相同,但它应该指示已添加、更改或删除了哪些字符。并且它应该仅通过突出显示来表明这一点(即不在一行中打印旧字符和新字符),以便每一行上的实际文本仍然与原始文本相同。
我尝试过构建一些东西dwdiff
(迭代行然后比较连续行),但还没有找到一种方法来突出显示已删除的字符:
infile=$1
line1=
line2=
lineNo=0
while IFS="" read -r nextLine || [ -n "$nextLine" ]; do
line1=$line2
line2=$nextLine
if [[ "$lineNo" -gt 0 ]]; then
dwdiff -1 -c <(printf '%s\n' "$line1") <(printf '%s\n' "$line2")
else
printf '%s\n' "$line2"
fi
lineNo=$((lineNo+1))
done
理想情况下,差异实际上适用于字符,但单词级别的差异也可以。
有没有办法得到这个结果dwdiff
?或者是否有现有的工具可以做到这一点?