【问题标题】:Using vimdiff to find differences in a particular column使用 vimdiff 查找特定列中的差异
【发布时间】:2013-06-26 09:00:04
【问题描述】:

我有一个非常大的 csv 文件,其中每个字段的宽度相同(因此每一行的宽度相同)。我需要找到特定列中的差异。

当我在 vimdiff 中打开 2 个文件时,大多数行都被标记为差异,因为有一个定期更改的日期时间字段(例如,第 10-15 列)。对于差异,该字段正确地涂成红色。但我感兴趣的是,比如说第 50-60 列,整个文件中只有一些差异。

到目前为止,我唯一的解决方案是删除文件中我不关心 :%s/^.\{49} 的部分,但这非常滞后,因为文件太大了。

有没有更好的解决方案而无需修改文件?

【问题讨论】:

  • 我更喜欢git --color-words --no-index -- file_a file_b,但它与vim 无关。

标签: vim diff vimdiff


【解决方案1】:

比较特定领域是否合适?

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 的解决方案,否则我会接受您的回答。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 2022-10-06
相关资源
最近更新 更多