Текст в вашем файле pages = {1113},
, да, он выглядит как число 1113
, но на самом деле после первого 1
стоит другой символ. И да, вы можете скопировать -и вставить строку из ссылки редактирования для этой веб-страницы, чтобы получить закодированный символ.
Мы можем заглянуть внутрь строки с помощью некоторых инструментов:
$ a='pages = {1113},'
Или, чтобы сделать это явно ясным и разрешить простое копирование -вставки без использования страницы редактирования:
$ a=$(printf 'pages = {1\xc2\x96113},')
$ echo "$a" | od -An -tx1c
70 61 67 65 73 20 3d 20 7b 31 c2 96 31 31 33 7d
p a g e s = { 1 302 226 1 1 3 }
2c 0a
, \n
$ echo "$a" | sed -n l
pages = {1\302\226113},$
$ echo "$a" | xxd
00000000: 7061 6765 7320 3d20 7b31 c296 3131 337d pages = {1..113}
00000010: 2c0a
Итак, символ представляет собой двухбайтовое значениеc2 96
(в шестнадцатеричном формате )или302 226
(в восьмеричном ).
Вероятно, это кодировка UTF -8 байтового значения 96
или выраженная как символ Unicode:U-0096
.
Это значение, в настоящее время UTF -8, или еще лучше, в ISO -8859 -1, является управляющим символом в области C1 управляющих символов(Страница Википедии)и(Unicode PDF ), который идет от 128 до 159 в десятичном виде. В частности, У -0096 называется «НАЧАЛО ОХРАНЯЕМОЙ ЗОНЫ» или СПА .
Это значение (dec 150 )выходит за пределы диапазона ASCII (0 -127 )и было (в прежние времена )использовавшимся для представления нескольких символов в зависимости от кода -использована страница. Разумно предположить, что ранее это было тире (для обозначения диапазона 1 -113 )в кодировке Windows -1252(страницы Microsoft)(Wikipedia 1252)и называлось en dash(меньшее из двух тире en и em)(Википедия en dash)или просто, говоря простым языком, тире(-
).
На самом деле нет, управляющие символы являются допустимыми символами, редко используемыми, но действительными являются ни -, ни -меньше.
Но вы можете заменить их тире, чтобы упростить редактирование.
sed -n '/\xc2\x96/p' # will print lines that contain that character.
Или grep может искать символ (, выделение цветом не будет видно, так как символ не -печатаемый ), и печатать строку.
c="$(printf "\U96")" ; grep "$c" file.txt
Или, в более широком смысле, найдите все символы в этом диапазоне управляющих символов и перечислите файлы, содержащие такие символы:
grep -rlP "[\x80-\x9f]"
Это список(-l
)файлов, соответствующих символу.
grep -rlP "\x96"
ИМО, потому что busyboxwget
в Alpine Linux исправлен, чтобы требовать внешний исполняемый файл ssl_client
, который обрабатывает HTTPS, см.https://gitlab.alpinelinux.org/alpine/aports/-/commit/1d0560a9b6b5597b191e5aff69a31c2fe0aba273