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

Модернизация кода

29.04.2021, 23:47. Показов 1442. Ответов 4

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с кодом:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/bash
 
declare -i counter=0
item="false"
title=""
date=""
print="false"
 
while read line;
do
  if [[ $line =~  "<item>" ]]; then
    counter+=1
    item="true"
    title=""
    date=""
    print="false"
  fi
  if [[ $line =~ "</item>" ]]; then
    item="false"
  fi
 
  if [[ $line =~ "<title>"   && $item == "true" ]]; then
    title=`echo $line | sed 's/<\/\{0,1\}title>//g'`
  fi
  if [[ $line =~ "<pubDate>" && $item == "true" ]]; then
    value=`echo $line | sed 's/<\/*pubDate>//g'`
    date=`echo $value | sed 's/^[[:alpha:]]\{3\}, \([[:digit:]]\{2\} [[:alpha:]]\{3\} [[:digit:]]\{4\} [[:digit:]]\{2\}:[[:digit:]]\{2\}:[[:digit:]]\{2\}\) +[[:digit:]]\{4\}/\1/g'`
  fi
 
  if [[ $item == "true" && $date != "" && $title != "" && $print == "false" ]]; then
    printf "%02d)  %s  %s\n" "$counter" "$date" "$title"
    print="true"
  fi
 
done <  <(curl --silent https://lenta.ru/rss/top7)
 
echo ""
echo "Record(s) $counter are passed."
Необходимо модернизировать программу таким образом, чтобы дата (число-месяц-год) бралась из строки с тегом <guid> и привести решение с помощью: 1) awk, 2) regexp (регулярное выражение).
Спасибо)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.04.2021, 23:47
Ответы с готовыми решениями:

Модернизация кода
Всем доброго времени суток. Столкнулся с небольшой проблемкой. for (let i = 0; i &lt; arr.length; i++) if(String(arr) == 1 || 2...

Модернизация кода и вопрос
Здравствуйте! Вот такой вот есть код, выводящий посты на страницу, в wordpress. Подскажите, пожалуйста, как сделать так, чтобы если у...

Модернизация кода ввода пароля VBA
Короче создал код для ввода пароля в режиме формы и поставил его на кнопку. Все просто: код верный → открывает форму, неверный...

4
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
30.04.2021, 09:41
Я постаралась конечно впихнуть awk, но не смогла найти место для регулярного выражения поэтому совместила c Parameter Expansion (удаление суффикса по шаблону)
Держите патч:

Bash
1
2
3
4
5
6
7
8
9
10
diff origin.sh new.sh
2d1
<  
25,27c24,25
<   if [[ $line =~ "<pubDate>" && $item == "true" ]]; then
<     value=`echo $line | sed 's/<\/*pubDate>//g'`
<     date=`echo $value | sed 's/^[[:alpha:]]\{3\}, \([[:digit:]]\{2\} [[:alpha:]]\{3\} [[:digit:]]\{4\} [[:digit:]]\{2\}:[[:digit:]]\{2\}:[[:digit:]]\{2\}\) +[[:digit:]]\{4\}/\1/g'`
---
>   if [[ $line =~ "<guid>" && $item == "true" ]]; then
>     date=$(awk -F'/' -v OFS='/' '{NF=3}1' <<<${line#*news/})
1
0 / 0 / 0
Регистрация: 06.05.2017
Сообщений: 42
30.04.2021, 10:05  [ТС]
Цитата Сообщение от nezabudka Посмотреть сообщение
но не смогла найти место для регулярного выражения
а отдельно это нельзя никак провернуть?)

Добавлено через 3 минуты
Цитата Сообщение от nezabudka Посмотреть сообщение
Держите патч:
А как это будет выглядеть в самом коде?) можно полную версию посмотреть, пожалуйста?))
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
30.04.2021, 10:38
Лучший ответ Сообщение было отмечено Switch119 как решение

Решение

Цитата Сообщение от Switch119 Посмотреть сообщение
а отдельно это нельзя никак провернуть?)
Легко при помощи grep без awk
Ладно щас поизвращаюсь напишу на awk

Добавлено через 10 минут
Аж самой смешно. Вы уверены что необходимо применять бульдозер там где нужна детская лопатка?
Bash
1
date=$(awk -F'news/' '{sub(/\/[^/]+\/<\/[^/]*$/, "", $2); print $2}' <<<"$line"
Добавлено через 1 минуту
Цитата Сообщение от Switch119 Посмотреть сообщение
А как это будет выглядеть в самом коде?) можно полную версию посмотреть, пожалуйста?))
< - стрелочки то что надо заметить
> - стрелочки то на что надо заменить

Тренируйтесь это полезно. Но лучше открыть справочную страницу по утилите diff

Добавлено через 7 минут
По логике даже дающего задание ожидают в ответ что-то подобное:
Bash
1
grep -o '202[0-9]/[01][0-9]/[0-3][0-9]' <<<$line
Добавлено через 6 минут
Вот если применить gawk (посмотрите возможно у вас просто ссылка awk на gawk)
Bash
1
2
ls -l $(which awk)
lrwxrwxrwx 1 root root 4 июл 27  2020 /usr/bin/awk -> gawk
То думаю это то что от вас ожидают:
Code
1
date=$(awk '{print gensub(/.*(202[0-9]\/[01][0-9]\/[0-3][0-9]).*/, "\\1", 1 )}' <<<$line)
1
0 / 0 / 0
Регистрация: 06.05.2017
Сообщений: 42
30.04.2021, 10:57  [ТС]
Цитата Сообщение от nezabudka Посмотреть сообщение
Аж самой смешно. Вы уверены что необходимо применять бульдозер там где нужна детская лопатка?
Это уже вопросы к тому, кто дал задание))
Спасибо большое за ответы, буду разбираться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2021, 10:57
Помогаю со студенческими работами здесь

Геометрические фигуры, оптимизация и модернизация кода
Здравствуйте. Ниже представлен код моей программы. Создаю абстрактный класс - фигуры. Затем классы наследники: треугольник, прямоугольник,...

Модернизация кода в виде дополнения RollBack и Commit
Помогите, пожалуйста, разобраться! Короче есть такой метод (работает правильно): Random rand = new Random(); int i = 1; ...

Проверка количества символов и самих символов в строке (матрица), модернизация кода
Здравствуйте. Задача состоит в следующем: у меня есть матрица 128х128, которая считывается из файла. Необходимо, чтобы она...

модернизация пк
Доброго времени суток Комрады! Имею пк Материнка Asus LGA1155 p8b75-m 4xdd3 Видеокарта Geforce 1050ti Gigabite Процессор i5-3470...

Модернизация
Здравствуйте хочу узнать можно модернизировать данную сборку или уже нет смысла?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru