O Csplit é um utilitário de texto. É baseado em linha. Um padrão /FORM/
significa “uma linha contendo FORM
”. Uma linha é uma sequência de bytes diferente de LF (alimentação de linha, também conhecida como nova linha, que pode ser escrita \n
, ^ J,…), seguida por um byte LF (ou pelo final do arquivo, com utilitários GNU ). Assim, o "lixo" que você observa é o que quer que esteja entre o caractere LF anterior e a substring FORM
.
A página de manual e a descrição --help
curta presumem que você já sabe o que o comando faz, então eles apenas mencionam “partes” sem explicação. Você precisa ler a documentação completa para obter uma descrição do que as peças são .
Você não pode fazer o que quiser com o csplit. Você pode fazer isso com o GNU awk. (Outras versões do awk podem não ter os recursos necessários - suporte a separadores de registros arbitrários e lidar com bytes nulos.) Não testado:
gawk -v RS='FORM' -v ORS='' '{
print "FORM" $0 >sprintf("sample-%04d.aif", n++)
}' DATA.DAT
Mas isso pode ser cortado em locais espúrios se os dados compactados contiverem apenas os quatro bytes FORM
. Isso pode ser bom o suficiente para uma operação única com revisão manual, mas seria melhor se você precisasse de algo confiável.