На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random, Модераторы разделов
-
olecya
- Сообщения: 873
- ОС: debian, fedora (i3-wm)
Сообщение
olecya »
Собственно далеко кодить не будем вот эта строчка из соседней темы
Наглая ложь в технической документации Microsoft
Код: Выделить всё
str="%D1%83%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D1%81%D1%82%D0%BE%D0%BB%D0%B1%D1%86%D0%B0-%D1%87%D0%B8%D1%81%D0%B5%D0%BB-%D0%BD%D0%B0-%D0%BE%D0%B4%D0%BD%D0%BE-%D0%B8-%D1%82%D0%BE-%D0%B6%D0%B5-%D1%87%D0%B8%D1%81%D0%BB%D0%BE"
Думаю можно найти оригинальные решения. Кому интересно присоединяйтесь.
-
azsx
- Сообщения: 3684
- ОС: calculate linux, debian, ubuntu
Сообщение
azsx »
echo %D1%83%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D1%81%D1%82%D0%BE%D0%BB%D0%B1%D1%86%D0%B0-%D1%87%D0%B8%D1%81%D0%B5%D0%BB-%D0%BD%D0%B0-%D0%BE%D0%B4%D0%BD%D0%BE-%D0%B8-%D1%82%D0%BE-%D0%B6%D0%B5-%D1%87%D0%B8%D1%81%D0%BB%D0%BE | php -r 'echo urldecode(fgets(STDIN));'
Вот так? Неохота читать флудную тему.
-
Bizdelnick
- Модератор
- Сообщения: 20348
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Сообщение
Bizdelnick »
Когда-то писал такое для кодирования:
Код: Выделить всё
urlencode() {
iconv -t utf-8 | perl -nwe 'print join "", map { /([[:alnum:]\/.:_-])/ ? $_ : sprintf("%%%02x",ord($_)) } split //;'
}
Код: Выделить всё
urlencode() {
iconv -t utf-8 | \
env LC_CTYPE=C awk '
BEGIN {
RS = ""
ORS = ""
for (i = 0; i <=255; i++) {
t = sprintf("%c", i)
if (t ~ /[a-zA-Z0-9\/.:_-]/) {
map[t] = t
} else {
map[t] = sprintf("%%%02X", i)
}
}
}
{
len = split($0, c, "")
for (i = 1; i <= len; i++) {
print(map[c[i]])
}
}'
}
Декодирование по аналогии сделать несложно.
Последний раз редактировалось Bizdelnick 13.05.2021 19:36, всего редактировалось 1 раз.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще | в течение (часа)
новичок
нюанс
по умолчанию | приемлемо
проблема
пробовать
трафик |
-
olecya
- Сообщения: 873
- ОС: debian, fedora (i3-wm)
Сообщение
olecya »
Я тож вот тут набросала на мой взгляд 2 интересных варианта и попробую далее распарсить:
Код: Выделить всё
echo ${str//[%-]} | xxd -r -ps
умножениестолбцачиселнаодноитожечисло
echo ${str//[%-]} | dc -e '16i?P'
умножениестолбцачиселнаодноитожечисло
Добавлено (18:10):
xxd имеет ограниченную длину строки, а калькулятор подрос на один пайп:
Shell
echo ${str//-/2D} | xxd -r -p
умножение-столбца-чисел-на-одно-и-то-же-число
Shell
echo ${str//-/2D} | tr -d % | dc -e '16i?P'
умножение-столбца-чисел-на-одно-и-то-же-число
Добавлено (18:19):
Классика сработала лучше, чем все остальное, даже с переводом строки
Shell
printf "%b\n" ${str//%/\\x}
умножение-столбца-чисел-на-одно-и-то-же-число
Но я первоначально делала через sed
Последний раз редактировалось olecya 13.05.2021 20:00, всего редактировалось 1 раз.
-
olecya
- Сообщения: 873
- ОС: debian, fedora (i3-wm)
Сообщение
olecya »
Bizdelnick
Буквально недавно задумалась как в функцию перенаправить stdin. Спасибо
Добавлено (20:08):
Нашла на стакиксчейндж, люблю команду echo и не люблю кавычки:
Shell
echo -e ${str//%/\\x}
умножение-столбца-чисел-на-одно-и-то-же-число