【问题标题】:Do diff between pairs of a file a list在文件对之间进行差异列表
【发布时间】:2013-08-27 13:55:52
【问题描述】:

我的 Linux 系统上有一个目录,其内容是成对的文件名,如下所示:

 File1a
 File1b
 File2a
 File2b
 File3a
 File3b

我想对 File1a 和 File1b 的内容进行比较,并将结果存储在单独的文件中。类似地,对遍历整个列表的其他对执行此操作。这可以通过 shell 脚本实现吗?

【问题讨论】:

    标签: linux shell unix loops


    【解决方案1】:
    for x in 1 2 3
    do
      diff File${x}a File${x}b > File${x}diff
    done
    

    这会将每个差异放入自己的文件中(例如File1diff)。如果你想把所有的差异放到一个文件中,你可以这样做:

    for x in 1 2 3
    do
      echo "***** Diff of File${x}a <> File${x}b:" >> DiffOutput
      diff File${x}a File${x}b >> DiffOutput
    done
    

    【讨论】:

      【解决方案2】:

      如果您真的需要依赖文件中的内容,因为您的文件名与您发布的简单模式不匹配(并且您的文件名不包含空格),您可以执行以下操作:

      xargs -L2 echo < file.txt | while read first second; do
          diff "${first}" "${second}" > "${first}_${second}.diff"
      done
      

      否则选择@devnull 或@mbratch 的解决方案。

      【讨论】:

      • 阿德里安..这有效..我的文件名与我在问题中提出的确切模式不符..只有你的方法有效..非常感谢..
      【解决方案3】:

      假设文件名的格式为File\d*{a,b}

      for i in File*a; do
        diff ${i} ${i%a}b > ${i%a}.diff
      done
      

      对于一对File1aFile1b,差异将被重定向到File1.diff

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-21
        • 1970-01-01
        • 2023-01-07
        • 2019-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多