2017-01-12 63 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