Concatene o cabeçalho de um arquivo com a cauda de outro

0

Eu tenho um grande arquivo mysqldump gzipado que contém algumas definições de tabela e muitas instruções de inserção. Gostaria de editar as definições da tabela, mas deixar as instruções de inserção sozinhas. O arquivo tem cerca de 500gb quando é compactado, então eu gostaria de evitar soltá-lo apenas para editá-lo. Para pular o cabeçalho eu pude fazer

zcat bigfile.gz | tail -n+50

E apenas adicionar o cabeçalho a outro arquivo compactado que eu posso fazer

zcat header.gz bigfile.gz

Mas existe alguma maneira de combinar essas duas afirmações?

    
por noisecapella 17.03.2014 / 16:01

2 respostas

2

Você pode usar a substituição de processos , que é mais idiomática e menos trabalhosa do que um canal nomeado.

cat header.sql <(zcat bigfile.gz | tail -n+50)
    
por 21.07.2016 / 17:21
0

Acabei usando um pipe nomeado para resolver este problema e três shells (via tmux):

Primeiro,

mkfifo pipe

Inicie o shell 1:

cat header.sql > pipe

Em seguida, inicie o shell 2:

zcat bigfile.gz | tail -n+50 > pipe

Em seguida, inicie o shell 3

cat pipe | mysql -uroot -pxyz database_name
    
por 17.03.2014 / 16:34

Tags