2015-12-07 5 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 
Смежные вопросы