Como remover eficientemente a assinatura de 2 bytes no início de um arquivo de log de 10mb e o gato ao mesmo tempo

0

Ubuntu 16

Atualmente, uso cat para enviar um arquivo de log de uma máquina remota para um visualizador de log de sites. O arquivo de log tem uma assinatura de dois bytes no início, que informa que o arquivo é de 16 bits ou 8 bits.

se eu nano o arquivo, o arquivo parece assim ...

��2^@0^@1^@8^@0^@4^@2^@8^@ ^@1^@5^@:^@4^@3^@:^@0^@8^@
^@0^@1^@8^@0^@4^@2^@8^@ ^@1^@5^@:^@4^@3^@:^@0^@8^@

Se eu cat filename ainda posso ver os primeiros 2 bytes no começo do arquivo

▒▒20180428 15:43:08
20180428 15:43:08

Se eu faço iconv -f utf-16 -t utf-8 filename Parece ótimo em shell ...

20180430 03:57:46
20180430 03:57:46

, mas aparece no site com a primeira linha parcialmente codificada

20180430 03:57:46 ㋾ ㄀㠀 㐀㌀   ㌀㨀㔀㜀㨀㐀㘀 嘀攀爀猀椀漀渀           㴀 㐀⸀ ⸀ ਀

Agora, se eu inverter o log iconv -f utf-16 -t utf-8 filename | tac , ele aparecerá no site perfeitamente.

Não sabe como proceder.

    
por needtoknow 30.04.2018 / 10:15

2 respostas

1

Se você quiser remover os primeiros 2 bytes, tente:

dd if=orginal_file of=new_file ibs=2 skip=1

Isso gerará new_file com os primeiros 2 bytes ignorados.

    
por 30.04.2018 / 10:31
0

Se você estiver apenas tentando remover os dois primeiros bytes, faça isso com tail -c +3 . Por exemplo:

$ printf 'hello\n' >> file1
$ tail -c +3 file1
llo
$ _
    
por 30.04.2018 / 22:40