2013-03-29 17 views
1

我有一個文本文件files.txt與以下條目vimdiff同時文件

"/home/dilawar/a.txt","/home/dilawar/b.txt" 
"/home/dilawar/aa.txt","/home/dilawar/bb.txt" 

現在,我希望看到文件的diff 1號線。我嘗試了以下

head -n 1 files.txt | cut -d, -f 2,3 | sed "s/,/\t/g" | xargs -I files vimdiff files 

它不工作。我用diff替換了vimdiff,但它也不起作用。但是這個工程

head -n 1 files.txt | cut -d, -f 1 | xargs -I file vim file 

如何通過file作爲參數傳遞給diff的作爲兩個單獨的文件路徑,而不是一個字符串?注意:更糟糕的是,我在一些文件路徑中留有空間。

回答

0

試試這個,看看是否有幫助

sed '1{s/,/ /; s/^/diff /;q}' files.txt|sh 
+0

'/家庭/迪勒韋爾/工程/ hpc21/2013ee668 /任務/ A4 /提交/卡姆利什AGRAWAL /問題2/test_bench。 vhdl,/ home/dilawar/Works/hpc21/2013ee668/Assignments/A4/Submissions/SHARDUL GAUR/09D07039_asgn4/gcd/test_bench.vhd:沒有這樣的文件或目錄。「只有當我可以刪除'','兩個文件?它將它作爲單個文件。 – Dilawar

1

先坐第一行,然後用空格recplace符號,並通過子shell將其提供給vimdiff

vimdiff $(head -1 files.txt | tr '",' ' ') 

上面的優雅的方法不會與空間的名稱工作。下面的骯髒的人會。

awk -F, 'NR==1{print "vimdiff",$1,$2}' files.txt | bash 
0

我也逃過文件路徑的空白(第一sed的命令)

head -n 1 files.txt | sed "s/ /\\\\ /g" | sed "s/[\",]/ /g" |xargs vimdiff