2015-12-07 65 views
0

我有幾十個文件進來,都是.dat格式幷包含標題。Bash或KSH連接帶標題的多個分隔文件

我想要做的是將所有文件連接到位於同一目錄中的名爲merged-date.dat的單個文件。這很簡單,但問題在於所有文件都有一個標題行。因此,對於第一個以外的任何文件,我想在concat過程中消除該標題行(又名第一行),因此我沒有包含標題的多個記錄。有人有主意嗎?預先感謝您的答案!

回答

0

您可以在沒有第一行的情況下獲取文件,例如tail -n+2 file。因此,您可以將第一個文件原樣複製併合並剩餘的所有循環。

cp file1.dat concat.dat 
for file in remaining files; do 
    tail -n+2 $file >> concat.dat 
done 

上述代碼的循環標題是僞代碼。

如果remaining files與所有文件相比很難計算,或者您只是將標題添加到新文件,然後合併所有其他文件。

head -n1 file1.dat > concat.dat 
for file in /folder/to/files/*; do 
    tail -n+2 $file >> concat.dat 
done