2012-07-25 62 views
2

我有很多*.dat文件。什麼是bash腳本,可以刪除每個重複的相鄰行?Uniq很多文件

+0

......這有什麼錯'uniq'? – 2012-07-25 05:02:05

+0

我不認爲我可以根據像* .dat這樣的正則表達式來指定許多輸出文件。 – 2012-07-25 05:03:36

+1

然後,您需要指定您遇到的問題是您不知道如何遍歷文件。 – 2012-07-25 05:04:37

回答

5

您的意思是?

#!/bin/bash 
for f in "[email protected]" 
do 
    cp "$f" /tmp/tmp.dat 
    uniq /tmp/tmp.dat > "$f" 
done 

在哪裏可以運行的目錄中有許多* .dat文件。如果你把這個稱爲uniq_dat腳本,並使其可執行文件,您可以運行它,如:

uniq_dat *.dat 
+0

@RosePerrone我會改的,所以你可以給它的文件列表 – 2012-07-25 05:08:07

+2

您應該使用'在「$ @」 F'或只是簡單的簡寫'爲F'。特殊變量'$ *'不能正確處理空格等。同樣,除非你特別希望shell將'IFS'上的值分割爲多個標記,否則你應該在'$ f'到處使用雙引號。 – tripleee 2012-07-25 06:54:38

+1

我會使用'mktemp'在相同的目錄中創建臨時文件,而'mv'而不是'cp',因爲無論如何您都要覆蓋原始文件。 – chepner 2012-07-25 11:17:59