unix diff的左右结果?

时间:2013-06-19 15:30:57

标签: bash unix diff

如何将unix diff命令的结果左右绘制而不是一个差异?请参阅下面的示例:

    diff /tmp/test1  /tmp/test2
1,4c1,2
< asfdsadf
< asdfsad
< fsaf
< fdsadf
---
> asdfsafdsf
> saf
6,8d3
< sadf
< asdf
< sadf
10d4
< fasd
12,13c6,14
< sadfa
< fd
---
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> sadf
> safa

我希望有类似的东西:

diff /tmp/test1  /tmp/test2
1,4c1,2
< asfdsadf       > asdfsafdsf
< asdfsad        > saf       
< fsaf
< fdsadf
---
6,8d3
< sadf
< asdf
< sadf
10d4
< fasd
12,13c6,14
< sadfa               > sadf
< fd              > sadf
---               > sadf
              > sadf
              > sadf
              > sadf
              > sadf
              > sadf
              > safa

11 个答案:

答案 0 :(得分:127)

man diff开始,您可以使用-y并排进行。

-y, --side-by-side
       output in two columns

因此,请说:

diff -y /tmp/test1  /tmp/test2

测试

$ cat a                $ cat b
hello                  hello
my name                my name
is me                  is you

让我们比较一下:

$ diff -y a b
hello                                                           hello
my name                                                         my name
is me                                                         | is you

答案 1 :(得分:28)

来自icdiff&#39; homepage

enter image description here

  

您的终端可以显示颜色,但大多数差异工具都没有充分利用它。通过突出显示更改,icdiff可以显示类似文件之间的差异而不会妨碍。这对于识别和理解现有线路中的小变化特别有用。

     

icdiff的目标不是试图成为所有情况下的差异替代品,而是成为一种工具,可以更好地了解在差异不明显的情况下所发生的变化。

恕我直言,它的输出比diff -y更具可读性。

答案 2 :(得分:9)

您应该sdiff并排合并文件差异。阅读man sdiff阅读完整的故事。

答案 3 :(得分:9)

您可以使用:

sdiff  file1 file2

diff -y file1 file2

vimdiff file1 file2

并排显示。

答案 4 :(得分:6)

您可以简单地使用:

function install_load_profile(&$install_state) {
  $profile_file = DRUPAL_ROOT . '/profiles/' . $install_state ['parameters']['profile'] . '/' . $install_state ['parameters']['profile'] . '.profile';
  if (file_exists($profile_file)) {
    // ...
  }
  else {
    throw new Exception(st('Sorry, the profile you have chosen cannot be loaded.'));
  }
}

它显示分割为两个列并且着色的输出! (diff -y fileA.txt fileB.txt | colordiff

答案 5 :(得分:4)

使用-y选项:

diff -y file1 file2

答案 6 :(得分:4)

尝试cdiff - 查看工作区中的彩色增量差异或并排显示stdin和自动寻呼机支持。

答案 7 :(得分:4)

   import Foundation
   import StoreKit
   class  SpsRateManager {


private static let instance = SpsRateManager()

var shareinstance: SpsRateManager{
    return .instance
}
static func incrementAppOpenedCount() { // called from appdelegate didfinishLaunchingWithOptions:
    let userdefault = UserDefaults.standard


    let savedvalue = userdefault.integer(forKey: Configuration.APPLICATIONOPENCOUNTSTATUS)
    if savedvalue == 0 {
        print("Not saved ")
          userdefault.set(1, forKey: Configuration.APPLICATIONOPENCOUNTSTATUS)
    }
    else{
        userdefault.set(savedvalue+1, forKey: Configuration.APPLICATIONOPENCOUNTSTATUS)

    }

}

static func checkAppopencountandProvideReview(){
    let userdefault = UserDefaults.standard


    let appopencountvalue  = userdefault.integer(forKey: Configuration.APPLICATIONOPENCOUNTSTATUS)
    if appopencountvalue % 10 == 0 {
        print("its been 10 times so ask for review ")
        SpsRateManager().requestReview()
    }
    else{
        print("not enough open count dont show ")
    }

}




fileprivate func requestReview() {
    if #available(iOS 10.3, *) {
        SKStoreReviewController.requestReview()
    } else {
        // Fallback on earlier versions
        // Try any other 3rd party or manual method here.
    }
}

答案 8 :(得分:3)

您可以使用vimdiff

示例:

vimdiff file1 file2

答案 9 :(得分:2)

如果您的文件使用空格和制表符不一致,您可能会发现包含-t参数以展开标签会很有帮助:

diff -ty file1 file2

答案 10 :(得分:0)

带有颜色,并排和别名的增强的diff命令

假设文件内容如下:

cat /tmp/test1.txt
1
2
3
4
5
8
9

cat /tmp/test2.txt
1
1.5
2
4
5
6
7

现在并排比较

diff --width=$COLUMNS --suppress-common-lines --side-by-side --color=always /tmp/test1.txt /tmp/test2.txt
                                                                              > 1.5
3                                                                             <
8                                                                             | 6
9                                                                             | 7

您可以定义要使用的别名

alias diff='diff --width=$COLUMNS --suppress-common-lines --side-by-side --color=always'

然后是新的差异结果:

diff /tmp/test1.txt /tmp/test2.txt
                                                                              > 1.5
3                                                                             <
8                                                                             | 6
9                                                                             | 7