我很好奇是否有办法只使用diff来改变行,而不是新添加的行?
我的意思是,假设我有两个文件file1和file2。
file1是:
abc=123
def=234
klm=10.10
xyz=6666
file2是:
abc+=123
def=234
klm=10.101
xyz=666
stackoverflow=1000
superuser=2000
wtf=911
我想要的是给出像diff <parameters> file1 file2
这样的命令并获得类似
- abc=123
+ abc+=123
- klm=10.10
+ klm=10.101
- xyz=6666
+ xyz=666
这样的输出也受到欢迎:
- abc=123
+ abc+=123
def=234
- klm=10.10
+ klm=10.101
- xyz=6666
+ xyz=666
我不想要
stackoverflow=1000
superuser=2000
wtf=911
输出中的行。
有没有办法在Linux中使用diff的参数获得此功能?
答案 0 :(得分:1)
一个简单的Perl脚本:
use strict;
use warnings;
my ($fname1, $fname2) = ($ARGV[0], $ARGV[1]);
my %conf;
open (my $input1, "<", "$fname1") or die("open $fname1: $!");
while (<$input1>) {
chomp;
my @v = split(/\+?=/);
$conf{$v[0]}=$_;
}
close $input1;
open (my $input2, "<", "$fname2") or die("open $fname2: $!");
while (<$input2>) {
chomp;
my @v = split(/\+?=/);
if (defined ($conf{$v[0]}) && $_ ne $conf{$v[0]}) {
print "- $conf{$v[0]}\n";
print "+ $_\n";
}
}
close $input2;
- abc=123
+ abc+=123
- klm=10.10
+ klm=10.101
- xyz=6666
+ xyz=666
答案 1 :(得分:1)
尝试diff -U0,它应该只为你提供更改的行而没有更多的上下文。