如何将文本文件与bash

时间:2015-07-28 14:21:17

标签: bash

大家好,我有几种文本文件(全部在一个目录中),格式如下:

server1.txt  
Jar file 1 : md5sum : size  
Jar file 2 : md5sum : size  
Jar file 3 : md5sum : size  
etc  

所以我想要做的是将这些文件中的一个与其他文件进行比较,以便得出主文本文件中出现但未出现在其他文件中的jar名称列表。我需要安排数据,以便在所有文件中找到差异的地方将文本文件的名称读取到stdout。

这是我到目前为止,它将读取主文本文件,并从中获取必需的字段(jar名称及其对应的md5sum)。然后循环读取所有其他文本文件,并在实际比较之前将它们放在一个数组中:

jarListFiles=(*.txt) #only所需文件在此目录中

( cat ukv01stats.txt | while IFS=: read f1 f2 f3 f4 ; do echo "$f1 - $f2" > temp_ukv01stats.txt; done < ukv01stats.txt ; for file in ${jarListFiles[@]}; do read f1 f2 f3 f4 ; echo "$f1 - $f2" > temp_$file; done < $file ; diff temp_ukv01stats.txt $file )

但是,我得到了bash: 0: ambiguous redirect diff: missing operand after temp_ukv01stats.txt diff: Try diff --help' for more information.

非常感谢您的帮助,并提前感谢您花时间寻找解决方案。

1 个答案:

答案 0 :(得分:1)

NAME
       diff - compare files line by line

SYNOPSIS
       diff [OPTION]... FILES

DESCRIPTION
       Compare FILES line by line.

       Mandatory arguments to long options are mandatory for short options too.

       [...]

       -r, --recursive
              recursively compare any subdirectories found

所以,diff -R directory1/ directory2/