有没有办法区分不同文件中的一行?

有没有办法区分不同文件中的一行?

我目前正在对 i18n 文件进行一些整合。在某些情况下,我在多个文件中有重复的键,我想知道是否可以删除其中一个重复项。

这是一个例子:

config/locales/en-primary.yml:  language_key: 'lorem ipsum'
config/locales/en-secondary.yml:  language_key: 'lorem ipsum'

显然,这些是相同的,这在英语中很容易看出,但对于其他语言,并且当行变得更长时,事情会变得更加困难。我当前生成这些行的命令如下:

grep language_key config/locales/en-*.yml

有没有办法将这两行通过管道传输来diff相互比较?如果这能让事情变得更容易的话,我可以保证每次 grep 只会得到两个结果。

答案1

如果只是两个文件:

diff <(grep 'language_key' config/locales/en-primary.yml) <(grep 'language_key' config/locales/en-secondary.yml)

答案2

DopeGhoti 的答案的变体(关于支持进程替换的注释也适用于此处),这里是不同行的并排视图:

diff -y --suppress-common-lines <(grep 'language_key' config/locales/en-primary.yml) <(grep 'language_key' config/locales/en-secondary.yml)

相关内容