10MBのログファイルとcatで始まる2バイト署名を同時に効果的に削除する方法

10MBのログファイルとcatで始まる2バイト署名を同時に効果的に削除する方法

Ubuntu 16

私は現在、catを使用してリモートコンピュータからWebサイトログビューアにログファイルを転送しています。ログファイルの先頭には、ファイルが16ビットか8ビットかを示す2バイトの署名があります。

ファイルをナノプロセスすると、ファイルは次のようになります。

��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^@

cat filenameファイルの先頭の最初の2バイトがまだ見える場合

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

これはiconv -f utf-16 -t utf-8 filenameシェルで素敵に見えます...

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

ただし、Webサイトには部分的にエンコードされた最初の行が表示されます。

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

ログを元に戻すと、iconv -f utf-16 -t utf-8 filename | tacウェブサイトに完全に表示されます。

どのように進むべきかわかりません。

答え1

最初の2バイトを削除するには、以下を試してください。

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

new_file出力時に最初の2バイトをスキップします。

答え2

最初の2バイトのみを削除するには、tail -c +3次のものを使用できます。

$ printf 'hello\n' >> file1
$ tail -c +3 file1
llo
$ _

関連情報