Используя awk для удаления метки Порядка байтов

Номер порта представляет собой 16-разрядное целое число без знака, поэтому 65535.

102
задан Boldewyn 15 March 2017 в 07:52
поделиться

2 ответа

Попробуйте следующее:

awk 'NR==1{sub(/^\xef\xbb\xbf/,"")}{print}' INFILE > OUTFILE

В первой записи (строке) удалите символы спецификации. Распечатайте каждую запись.

Или немного короче, зная, что действие по умолчанию в awk - это печать записи:

awk 'NR==1{sub(/^\xef\xbb\xbf/,"")}1' INFILE > OUTFILE

1 - кратчайшее условие, которое всегда принимает истинное значение, поэтому печатается каждая запись.

Наслаждайтесь!

- ДОПОЛНЕНИЕ -

Часто задаваемые вопросы по метке порядка байтов Unicode включает следующую таблицу, в которой перечислены точные байты спецификации для каждой кодировки:

Bytes         |  Encoding Form
--------------------------------------
00 00 FE FF   |  UTF-32, big-endian
FF FE 00 00   |  UTF-32, little-endian
FE FF         |  UTF-16, big-endian
FF FE         |  UTF-16, little-endian
EF BB BF      |  UTF-8

Таким образом, вы можете увидеть, как \ xef \ xbb \ xbf соответствует EF BB BF UTF-8 байтам спецификации из приведенной выше таблицы.

111
ответ дан 24 November 2019 в 04:27
поделиться

Не на awk, а проще:

tail -c +4 UTF8 > UTF8.nobom

Чтобы проверить наличие спецификации:

hd -n 3 UTF8

Если есть спецификация, вы увидим: 00000000 ef bb bf ...

41
ответ дан 24 November 2019 в 04:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: