Я искал онлайн примеры, прошел справочник cut
управляйте и протестированный это самостоятельно и останьтесь не уверенными в -b
флаг. Нет никаких ясных примеров относительно как cut -b
работы команды. Кто-то может создать файл в качестве примера и показать, как он ясно используется?
Программное обеспечение GNU описано в info
страницы, поэтому давайте посмотрим что info cut
говорит:
СПИСОК БАЙТА ‘-b’ ‘-bytes=BYTE-LIST’
Выберите для печати только байтов в положениях, перечисленных в СПИСКЕ БАЙТА. Вкладки и клавиши Backspace рассматривают как любой другой символ; они поднимают 1 байт. Если выходной разделитель указан, (см. описание ‘-выходной разделитель’), то произведенный, что строка между диапазонами выбранных байтов.СИМВОЛЬНЫЙ СПИСОК ‘-c’ ‘-characters=CHARACTER-LIST’
Выберите для печати только символов в положениях, перечисленных в СИМВОЛЬНОМ СПИСКЕ. То же как ‘-b’ на данный момент, но интернационализация изменит это. Вкладки и клавиши Backspace рассматривают как любой другой символ; они поднимают 1 символ. Если выходной разделитель указан, (см. описание ‘-выходной разделитель’), то произведенный, что строка между диапазонами выбранных байтов.
Это от coreutils 8.28, который идет с Ubuntu 18.04 и 18.10, добавляя, что многобайтовая поддержка происходит и может включить другое поведение этих двух опций в будущем.
xxd -g1
шоу hexdump эквиваленты байта символов (после двоеточия) сгруппировали bytewise, а также его представление ASCII слева. Возьмите в качестве примера:
$ printf a | xxd -g1
00000000: 61 a
$ printf á | xxd -g1
00000000: c3 a1 ..
a
однобайтовый символ с шестнадцатеричными эквивалентными 61, в то время как á
двухбайтовый символ с шестнадцатеричным эквивалентным c3 a1. Давайте посмотрим как cut
от coreutils 8.28 ведет себя, если мы пытаемся отключить первый байт или символ соответственно (0a
просто символ новой строки, добавленный cut
и может быть проигнорирован):
$ printf ab | cut -b1 | xxd -g1
00000000: 61 0a a.
$ printf ab | cut -c1 | xxd -g1
00000000: 61 0a a.
$ printf áb | cut -b1 | xxd -g1
00000000: c3 0a .. # first byte of á
$ printf áb | cut -b2 | xxd -g1
00000000: a1 0a .. # second byte of á
$ printf áb | cut -c1 | xxd -g1
00000000: c3 0a .. # first byte of á
$ printf áb | cut -c2 | xxd -g1
00000000: a1 0a .. # second byte of á
Когда это реализовано, ожидаемое поведение:
$ printf ab | cut -b1 | xxd -g1
00000000: 61 0a a.
$ printf ab | cut -c1 | xxd -g1
00000000: 61 0a a.
$ printf áb | cut -b1 | xxd -g1
00000000: c3 0a .. # first byte of á
$ printf áb | cut -b2 | xxd -g1
00000000: a1 0a .. # second byte of á
$ printf áb | cut -c1 | xxd -g1
00000000: c3 a1 0a ... # both bytes of á
$ printf áb | cut -c2 | xxd -g1
00000000: 62 0a b. # second char = b