우분투 16
저는 현재 cat을 사용하여 원격 컴퓨터에서 웹사이트 로그 뷰어로 로그 파일을 전송하고 있습니다. 로그 파일의 시작 부분에는 파일이 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
하지만 웹사이트에는 부분적으로 인코딩된 첫 번째 줄이 표시됩니다.
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
$ _