Estou despejando a saída do mkfs no arquivo de log, mas ele exibe seu processo interativamente, imprimindo backspaces para retornar o cursor, depois imprime espaços para apagar, depois faz backspaces novamente e imprime uma nova mensagem.
No log, parece uma bagunça. Aqui está o que eu descobri para compactar um conjunto de BSs em um único espaço
# echo -e "AAABBB\x08\x08\x08\x08\x08\x08CCC" | sed -e 's/\(\x08\)\1\+/\1/g' -e 's/\(\x08\)/x/'
AAABBBxCCC
Mas existe uma maneira melhor de condensar sequências de BSs + espaços + BSs... em um único caractere de espaço usando regex? Eu consigo escrever o binário fazendo isso, mas, na minha opinião, isso é exagero...
Um exemplo de entrada seria
# echo -e "123\x08\x08\x08 \x08\x08\x08456 789"
converter para
123 456 789
Atualização: no início, eu disse que a saída é feita pelo mkfs. Deixe-me mostrar o exemplo para que você veja o conjunto de caracteres.
mke2fs 1.47.0 (5-Feb-2023)
fs_types for mke2fs.conf resolution: 'ext4'
Discarding device blocks: 0/16463361572864/1646336 done
Filesystem label=data_volume
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
412080 inodes, 1646336 blocks
82316 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1686110208
51 block groups
32768 blocks per group, 32768 fragments per group
8080 inodes per group
Filesystem UUID: c27f71c7-2d9e-4a33-9d54-449ab3e2f378
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: 0/51 done
Writing inode tables: 0/51 done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: 0/51 done
Os backspaces não são exibidos na janela acima (eles foram removidos após copiar e colar).
Experimente isto:
por exemplo:
Isso deve converter todas as cadeias de caracteres de retrocesso (possivelmente com espaços no meio) em espaços individuais.