2017-01-12 65 views
0

这个问题是关系到Bash - Compare 2 lists of files with their md5 check sums巴什 - 编辑代码行

我的问题是如何编辑下面的代码显示文件的它,而不是仅仅是名称的完整路径:

awk -F"/" 'FNR==NR{filearray[$1]=$NF; next }!($1 in filearray){printf "%s has a different md5sum\n",$NF}' file1 file2 

awk -F"/" 'FNR==NR{filelist[$NF]=$NF; next;}!($NF in filelist){printf "%s is an extra file",$NF}' file1 file2 

欲了解更多信息,请查看其他问题!

谢谢大家的时间和帮助!

回答

3

使用GNU Awk字符串操作split-function来拆分匹配行(在本例中为$0),并将其作为单独元素存储在array中。

awk -F"/" 'FNR==NR{filearray[$1]=$NF; next }!($1 in filearray){split($0,array," ");printf "%s has a different md5sum or do not exist in the vanilla core files\n",array[2]}' file2 file1 
/home/user/vanila/file-4.php has a different md5sum or do not exist in the vanilla core files 

和文件(S)

awk -F"/" 'FNR==NR{filelist[$NF]=$NF; next;}!($NF in filelist){split($0,array," "); printf "%s is an extra file\n",array[2]}' file1 file2 
/home/user/file-1.1.php is an extra file 
+0

谢谢。我是bash脚本编写的初学者,尤其是使用'GNU Awk',这就是为什么代码对我来说非常复杂的原因! – SasnycoN

+1

@SasnycoN:发布自己的尝试,往往会吸引更多的答案!干杯!了解更多关于'Awk'的内容,因为它非常强大。 – Inian