Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
10 / 7 / 3
Регистрация: 12.09.2021
Сообщений: 78

Самая длинная переменная окружения

05.10.2022, 19:15. Показов 1355. Ответов 21

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста написать программу, которая выводит самую длинную переменную окружения.
После ввода команды:
Bash
1
set
Выводятся все переменные окружения - это все строки. Как найти самую длинную из них?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.10.2022, 19:15
Ответы с готовыми решениями:

Переменная окружения
здравствуйте,помогите создать переменная окружения,хранящая год вашего рождения.Выведите сообщение о вашем возрасте,используя:константу...

САМАЯ ДЛИННАЯ ПЕРЕМЕННАЯ ПОДПОСЛЕДОВАТЕЛЬНОСТЬ
Допустим, дана последовательность целых чисел. Последовательность B, ..., B - это чередующаяся подпоследовательность последовательностей A,...

Какая строка в массиве встретится раньше: самая короткая или самая длинная
1. Создай массив строк. 2. Добавь в него 10 строчек с клавиатуры. 3. Узнай, какая строка в массиве встретится раньше: самая короткая...

21
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,884
05.10.2022, 19:29
дорогой друг,
ничто так не раздражает здравомыслящего человека,
как полная алогичность поступков окружающих ( хотел добавить идиотов, но воздержался ).

вот зачем тратить время на составление сообщения, если есть возможность найти самостоятельно ответ за 0.5 сек ?
0
10 / 7 / 3
Регистрация: 12.09.2021
Сообщений: 78
06.10.2022, 11:51  [ТС]
Найди) Этой задачи просто нету нигде
0
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,884
06.10.2022, 12:09
о да.
0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,232
06.10.2022, 12:24
simpler, а я нашёл.
0
1135 / 391 / 86
Регистрация: 30.08.2017
Сообщений: 2,418
06.10.2022, 13:15
ну направление-то надо дать, хотя действительно, оно быстрее ищется в поисковике, чем набирается на форуме, а тем более потом ещё и ждать ответа.
длину строки можно увидеть через:
r=32342423; echo ${#r}
awk '{ print length(12345) }'
expr
ну моё любимое wc

Добавлено через 1 минуту
ну направление-то надо дать, хотя действительно, оно быстрее ищется в поисковике, чем набирается на форуме, а тем более потом ещё и ждать ответа.
длину строки можно увидеть через:
r=32342423; echo ${#r}
awk '{ print length(12345) }'
expr
ну моё любимое wc

Это то что в голове затесалось, наверно ещё что-то есть.
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
06.10.2022, 14:49
Думаю здесь речь не о длине значения, а о длине имени переменной. Для правильного ответа полезно вспомнить правило составления имен переменных и как они определяются. Написать в соответствии регулярное выражение для отделения имен переменных из вывода команды set. Далее есть варианты. Первый посчитать и вывести во втором столбце длину каждого имени переменной, отсортировать по второму столбцу и в зависимости от направления сортировки вывести или первую или последнюю строку списка. Второй вариант, использовать текстовый процессор. Написать условие при котором в переменную будет записываться более длинная строчка и вывести в конце значение этой переменной. Алгоритм вроде понятен, осталось приложить собственные усилия и тогда помощь не заставит себя ждать.
0
10 / 7 / 3
Регистрация: 12.09.2021
Сообщений: 78
06.10.2022, 14:51  [ТС]
Ничего вы не нашли
0
1135 / 391 / 86
Регистрация: 30.08.2017
Сообщений: 2,418
06.10.2022, 16:26
Цитата Сообщение от simpler Посмотреть сообщение
Ничего вы не нашли
эээ.... а кто-то был обязан искать?? о_О

Цитата Сообщение от nezabudka Посмотреть сообщение
Думаю здесь речь не о длине значения, а о длине имени переменной. Для правильного ответа полезно вспомнить правило составления имен переменных и как они определяются. Написать в соответствии регулярное выражение для отделения имен переменных из вывода команды set. Далее есть варианты. Первый посчитать и вывести во втором столбце длину каждого имени переменной, отсортировать по второму столбцу и в зависимости от направления сортировки вывести или первую или последнюю строку списка. Второй вариант, использовать текстовый процессор. Написать условие при котором в переменную будет записываться более длинная строчка и вывести в конце значение этой переменной. Алгоритм вроде понятен, осталось приложить собственные усилия и тогда помощь не заставит себя ждать.
Ну я просто привёл пару примеров как подсчитать длину строки:
Цитата Сообщение от simpler Посмотреть сообщение
это все строки. Как найти самую длинную из них
0
325 / 50 / 11
Регистрация: 08.04.2022
Сообщений: 190
06.10.2022, 19:14
Еще вчера было желание отписать, потом его подавил, но сегодня не смог.

Цитата Сообщение от simpler Посмотреть сообщение
выводит самую длинную переменную окружения
1. длина значения или
2. длина имени переменной
3. есть переменные-строки, есть переменные-массивы (индексные и ассоциативные), как считать длину для них

По третьему пункту: переменная-массив это такой хитрый черт в табакерке, который притворяется строкой.
Bash
1
2
3
4
5
$ echo ${#BASH_VERSINFO} - ${BASH_VERSINFO}
1 - 4
 
$ echo ${#BASH_VERSINFO[@]} - ${BASH_VERSINFO[@]}
6 - 4 4 12 3 release x86_64-unknown-cygwin
А еще строковое значение может быть многострочным. Но это проблем представлять не должно.
0
10 / 7 / 3
Регистрация: 12.09.2021
Сообщений: 78
06.10.2022, 20:31  [ТС]
никто не обязан это искать и тем более вы не обязаны это писать, но все же пишите
0
1135 / 391 / 86
Регистрация: 30.08.2017
Сообщений: 2,418
06.10.2022, 20:38
Для меня это отдых от нудной работы до самого НГ. Зайти, увидеть халявщика, малость потроллить...
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
06.10.2022, 21:03
Цитата Сообщение от siberian-man
Еще вчера было желание отписать, потом его подавил, но сегодня не смог.
Было б что писать. Вариант на коленке:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
#! /usr/bin/env bash
sizevar() {
  while read line; do
    name="${line%%=*}"
    value="${line#*=}"
    echo "$name;${#name};${#value};${#line};"
  done <<< `comm -3 <(declare | sort) <(declare -f | sort)` |
  sort -t ';' -k $1 -nr | sed 's/;.*//g;1q'
}
 
sizevar 2 # по длине имени
sizevar 3 # по длине значения
sizevar 4 # по длине строки целиком
1
1135 / 391 / 86
Регистрация: 30.08.2017
Сообщений: 2,418
06.10.2022, 21:37
неее
на коленке вот:

Bash
1
set  | grep '^[A-Za-z_]' | awk -F= '{ print $1 " " length($1) }' | sort -k2gr | head -n1 | cut -d" " -f1
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
06.10.2022, 22:01
_sg2, Если использовать текстовый процессор, зачем что-то еще? Негоже заставлять компутер делать лишнюю работу
Code
1
2
3
4
set | awk -F= '
    /^[a-zA-Z0-9_]+=/    {ln=length($1)}
    ln>j                 {j=ln; i=$1}
    END                  {print i}'
Или так если кому то понятней:
Code
1
set | awk -F= '/^[a-zA-Z0-9_]+=/ {ln=length($1)} ln>j {j=ln; i=$1} END {print i}'
0
1135 / 391 / 86
Регистрация: 30.08.2017
Сообщений: 2,418
06.10.2022, 22:25
Не-не-не... я не умею в awk/sed и всякие регулярки... (кроме того, я постоянно забываю про предварительную фильтрацию awk и даже не знал, что переменные могут с цифры начинаться). Ну и я люблю конвееры
Ну и если уж совсем выёживаться, то надо покопать в сторону массива ENVIRON в awk и вообще обойтись без set, но я не умею в awk
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
06.10.2022, 22:31
Цитата Сообщение от _sg2 Посмотреть сообщение
что переменные могут с цифры начинаться)
Вообще-то некоторые типы могут, но здесь они для "внутреннего применения". Если опытным путем попробовать упростить регулярку то можно легко прийти к такому шаблону '^[^= ]+='
У меня родилась идея, пойду мучить
0
1135 / 391 / 86
Регистрация: 30.08.2017
Сообщений: 2,418
06.10.2022, 22:36
Цитата Сообщение от nezabudka Посмотреть сообщение
'^[^= ]+='
кошмар... легко прийти... Пойду с горя от неполноценности посплю
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
07.10.2022, 00:52
Bash
1
set | awk -F= '/^\w+=/...'
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
07.10.2022, 13:57
Вот такой вот скриптик, читает из stdin. Потому как переменные окружения в скрипте и в терминале разные
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
 
sed -r '
/^\S+=/!b4
s/=.*//;
:1; s/([^\r])([^\r])/\1\r\2/; t1; G
:2; s/(\r)(.*\n.*)\1/\2/; t2
s/\n[^\r]+$//; t3
s/^[^\r]+\n//
:3; s/([^\r])([^\r])/\1\r\2/; t3; h
:4; $!d; g
s/\r//g
' -
Code
1
2
set | ./sed.sh
GLUSTER_GEO_REPLICATION_SUBOPTIONS
Добавлено через 25 минут
Я вспомнила еще одни встроенный в баш инструмент которым очень часто пользуюсь. Выводит уже готовые имена переменных
Code
1
compgen -v
Бери и пользуйся

А значит можно удалить первые две строчки моего скрипта

Добавлено через 1 час 30 минут
Да гори оно огнем! Не смогла абстрагироваться.
Bash
1
2
3
4
5
6
7
8
9
#!/bin/bash
sed -r '
G;s/./,&/g
:1 s/(,)(.*\n.*)\1/\2/;t1
s/\n[^,]+$//;t2
s/^[^,]+\n//
:2 s/,//g
h;$!d
' -
Code
1
2
compgen -v | ./sed.sh
GLUSTER_GEO_REPLICATION_SUBOPTIONS
Добавлено через 36 минут
Bash
1
2
vim -nesc "call setline(1,sort(getline(1,line('$')), {a,b -> len(a)-len(b)}))" +p +'q!' <(compgen -v)
GLUSTER_GEO_REPLICATION_SUBOPTIONS
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.10.2022, 13:57
Помогаю со студенческими работами здесь

Сформировать строки таким образов, что бы первой была самая короткая строка, а последней самая длинная
задан строка. сформировать строки таким образов что бы первой была самая короткая строка а последней самая длинная (все остальные строки...

Фамилия ученика,рост,оценка за 3 занятия. а) средняя оценка по каждому предмету общего класса б) самая длинная и самая
Фамилия ученика,рост,оценка за 3 занятия. а) средняя оценка по каждому предмету общего класса б) самая длинная и самая короткая по...

Самая длинная последовательность
Вводится последовательность цифр, 0 – конец ввода. Определить самый длинный ряд одинаковых цифр. Например: пользователь ввел: 1 2 2 2 3 1...

Самая длинная река
Здравствуйте. Задача элементарная. На листе имеются реки и их длина. Нужно вывести название самой длинной реки. Длину максимальную знаю как...

самая длинная последовательность из n 1 и 0
дается число n. из сочетаний 1 и 0 длиной n нужно составить самую длинную последовательность, так чтобы ни одно сочетание не встречалось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru