使用vimdiff查找特定列中的差异

4
我有一个非常大的csv文件,每个字段都是相同的宽度(因此每行都是相同的宽度)。我需要找到特定列中的差异。
当我在vimdiff中打开两个文件时,大多数行都被标记为差异,因为有一个经常变化的日期时间字段(例如,第10-15列)。这个字段会以红色显示,指示出差异。但是我感兴趣的是,比如第50-60列,在整个文件中只会有很少的差异。
到目前为止,我的唯一解决方案是删除我不关心的文件部分:%s/^.\{49},但是由于文件太大,这种方法很卡。
是否有更好的解决方案而无需修改文件呢?

我更喜欢使用 git --color-words --no-index -- file_a file_b,虽然它与 vim 无关。 - ernix
1个回答

5
比较特定字段是否合适?
vimdiff <(awk -F',' '{print $3}' a.csv) <(awk -F',' '{print $3}' b.csv)

或者,如果需要比较多个字段:
vimdiff <(awk -F',' '{print $2","$3}' a.csv) <(awk -F',' '{print $2","$3}' b.csv)

这在我的Linux系统上可以工作,但我需要比较的文件在Windows上(使用Windows gvim)。我有cygwin,所以我会尝试设置一个bash脚本来为我打开gvim。除非有人后来提供了一个仅限于vim的解决方案,否则我将接受您的答案。谢谢! - Tom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接