Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Объясните, как написать несложный скрипт.  (Прочитано 1412 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн drion

  • Автор темы
  • Активист
  • *
  • Сообщений: 889
    • Просмотр профиля
Задача:
из файла формата TXT, требуется построчно скопировать в таблицу с двумя столбцами числовые значения X и Y (лучше в LeebreOfiss) для последующего получения графика. Строки с Z оставлять, но перед и после вставлять пустую строку. Остальные символы игнорировать.
Можно упростить задачу: просто в файле убрать все символы кроме X,Y,Z сохраняя строчность.

Хотя бы дайте набросок общими словами. Попробую остальное додумать сам.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Объясните, как написать несложный скрипт.
« Ответ #1 : 30 Ноября 2018, 22:34:44 »
Если для Вас сложно сформулировать задание так чтоб было понятно не только Вам, попробуйте просто использовать способ примеров: пример текстового файла и то что хотите получить
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн drion

  • Автор темы
  • Активист
  • *
  • Сообщений: 889
    • Просмотр профиля
Re: Объясните, как написать несложный скрипт.
« Ответ #2 : 30 Ноября 2018, 23:16:09 »
Дано:
(Нажмите, чтобы показать/скрыть)
Надо:
(Нажмите, чтобы показать/скрыть)

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5743
  • Все по палатам!
    • Просмотр профиля
Re: Объясните, как написать несложный скрипт.
« Ответ #3 : 01 Декабря 2018, 00:03:29 »
И как этот файл вы собираетесь скормить либре? Может результирующий файл должен быть в нормальном для либры формате?
Извините, я все еще учусь

zse

  • Гость
Re: Объясните, как написать несложный скрипт.
« Ответ #4 : 01 Декабря 2018, 00:40:55 »
     — Конечная таблица вот так должна выглядеть? Или картинку покажите, а иначе есть проблемы с пониманием задачи.
Тот кто сможет Вам помочь должен чётко видеть задачу…
Код: (txt) [Выделить]
╔═══╦═══════╦═══╦════════╦═══╦════╗
║ X ║ 4.67  ║ Y ║ 18.993 ║ Z ║ 10 ║
║ — ║   —   ║ — ║   —    ║ Z ║  2 ║
║ — ║   —   ║ — ║   —    ║ Z ║  1 ║
║ X ║ 4.344 ║ Y ║ 17.019 ║ — ║ —  ║
║ X ║ 2.864 ║ Y ║ 17.264 ║ — ║ —  ║
║ X ║ 1.756 ║ Y ║ 16.607 ║ — ║ —  ║
║ X ║   1.7 ║ Y ║ 16.278 ║ — ║ —  ║
║ — ║   —   ║ Y ║   13.9 ║ — ║ —  ║
║ X ║   1.7 ║ — ║    —   ║ — ║ —  ║
║ — ║     — ║ Y ║ 16.278 ║ — ║ —  ║
║ X ║ 1.756 ║ Y ║ 16.607 ║ — ║ —  ║
║ X ║ 2.864 ║ Y ║ 17.264 ║ — ║ —  ║
║ X ║ 4.344 ║ Y ║ 17.02  ║ — ║ —  ║
║ X ║ 2.864 ║ Y ║ 17.264 ║ — ║ —  ║
║ X ║ 4.344 ║ Y ║ 17.02  ║ — ║ —  ║
╚═══╩═══════╩═══╩════════╩═══╩════╝
2018 Nov 30; 04:40 PM
« Последнее редактирование: 01 Декабря 2018, 01:31:25 от zse »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Объясните, как написать несложный скрипт.
« Ответ #5 : 01 Декабря 2018, 01:02:19 »
sed 's/^\s\+\|\<[A-W][-0-9\.]\+\(\s\+\|$\)//g' дано.txt
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн drion

  • Автор темы
  • Активист
  • *
  • Сообщений: 889
    • Просмотр профиля
Re: Объясните, как написать несложный скрипт.
« Ответ #6 : 01 Декабря 2018, 21:36:01 »
     — Конечная таблица вот так должна выглядеть? Или картинку покажите, а иначе есть проблемы с пониманием задачи.
Тот кто сможет Вам помочь должен чётко видеть задачу…
Код: (txt) [Выделить]
╔═══╦═══════╦═══╦════════╦═══╦════╗
║ X ║ 4.67  ║ Y ║ 18.993 ║ Z ║ 10 ║
║ — ║   —   ║ — ║   —    ║ Z ║  2 ║
║ — ║   —   ║ — ║   —    ║ Z ║  1 ║
║ X ║ 4.344 ║ Y ║ 17.019 ║ — ║ —  ║
║ X ║ 2.864 ║ Y ║ 17.264 ║ — ║ —  ║
║ X ║ 1.756 ║ Y ║ 16.607 ║ — ║ —  ║
║ X ║   1.7 ║ Y ║ 16.278 ║ — ║ —  ║
║ — ║   —   ║ Y ║   13.9 ║ — ║ —  ║
║ X ║   1.7 ║ — ║    —   ║ — ║ —  ║
║ — ║     — ║ Y ║ 16.278 ║ — ║ —  ║
║ X ║ 1.756 ║ Y ║ 16.607 ║ — ║ —  ║
║ X ║ 2.864 ║ Y ║ 17.264 ║ — ║ —  ║
║ X ║ 4.344 ║ Y ║ 17.02  ║ — ║ —  ║
║ X ║ 2.864 ║ Y ║ 17.264 ║ — ║ —  ║
║ X ║ 4.344 ║ Y ║ 17.02  ║ — ║ —  ║
╚═══╩═══════╩═══╩════════╩═══╩════╝
2018 Nov 30; 04:40 PM
Да, так пойдёт. Но,если есть способ или в Либре сразу заполнять ячейки автоматом или в другое приложение построения графиков наподобие Gnuplot, то будет именно то,что нужно. Потому что строк в файле от 1000 до 5000.


Пользователь добавил сообщение 01 Декабря 2018, 21:39:16:
sed 's/^\s\+\|\<[A-W][-0-9\.]\+\(\s\+\|$\)//g' дано.txt
Это сортировка? Её в терминале запускать?
« Последнее редактирование: 01 Декабря 2018, 21:39:16 от drion »

zse

  • Гость
Re: Объясните, как написать несложный скрипт.
« Ответ #7 : 01 Декабря 2018, 23:21:43 »
Её в терминале запускать?
    — Конечно, получается вот такое…
(Нажмите, чтобы показать/скрыть)
     — Я создал файл qq.txt из вашего образца, потом применил команду Azure, к этому файлу… Из этого что получается нужно будет делать таблицу, сейчас подумаю как. 2018 Dec 01; 03:21 PM

Оффлайн drion

  • Автор темы
  • Активист
  • *
  • Сообщений: 889
    • Просмотр профиля
Re: Объясните, как написать несложный скрипт.
« Ответ #8 : 01 Декабря 2018, 23:28:24 »
Ага,спасиб.

zse

  • Гость
Re: Объясните, как написать несложный скрипт.
« Ответ #9 : 02 Декабря 2018, 00:50:23 »
    — Путём дальнейших преобразований можно получить в терминале вот такое построение данных
(Нажмите, чтобы показать/скрыть)
     — Из терминала такие данные легко переносятся в текстовой файл, далее простым копирование текстовых данных получается таблица. Смотрите вложение.
     — „Дальнейшие приобразования😈“ у меня были длинными и очень корявыми, если не сказать откровенно уродливыми. Если не появятся специалисты я потом попытаюсь сделать чуть красивее и представлю.
2018 Dec 01; 04:50 PM

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Объясните, как написать несложный скрипт.
« Ответ #10 : 02 Декабря 2018, 02:51:49 »
zse, открою тайну) результат можно было запихнуть сразу и в csv файл, который прекрасно понимает либра)
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

zse

  • Гость
Re: Объясните, как написать несложный скрипт.
« Ответ #11 : 02 Декабря 2018, 04:02:07 »
     — Я, EvangelionDeath, даже об этом не подумал😕, никогда не делал, а ведь так просто, надеюсь Вы что-то подобно имели ввиду,  например …
Код: (bash) [Выделить]
cat qq.txt | sed 's/\.//g' > qq.csv     — Спасибо, может удастся запомнить😈…

Пользователь добавил сообщение 02 Декабря 2018, 05:59:53:
     — У нас с Вами, drion, скорее всего большая разница во времени, потому пишу сейчас, а вашим утром может кто из настоящих специалистов подправит.
     — Команда для существующего примера (предполагается, что все остальные данные походят на эти):
Код: (bash) [Выделить]
sed 's/^\s\+\|\<[A-W][-0-9\.]\+\(\s\+\|$\)//g' QQ.txt| \
sed 's/\ $//'|sed 's/\.$//'|sed 's/X/X\ /'|sed 's/Y/Y\ /' \
| sed 's/Z/Z\ /'|sed 's/-/\ /g'|sed 's/[ ][ ]*/\ /g'| \
sed  's/\ /\t/g'|sed 's/^Z/\t\t\t\tZ/'|sed 's/^Y/\t\tY/' > QQ.csv
QQ.txt —  начильный файл, QQ.csv — готовая таблица. 2018 Dec 01; 22:18 PM
« Последнее редактирование: 02 Декабря 2018, 06:18:48 от zse »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Объясните, как написать несложный скрипт.
« Ответ #12 : 02 Декабря 2018, 10:20:10 »
Что-то мне подсказывает, что XYZ ТС не нужны, главное чтоб числа стояли в нужном "столбике"...:
Код: (bash) [Выделить]
sed '
    s/^\s\+\|\<[A-W][-0-9\.]\+\(\s\+\|$\)//g;
    s/\s*Z[^0-9]*/\t/;
    s/^\t/\t\t/;
    s/\s*Y[^0-9]*/\t/;
    s/X[^0-9]*//
    ' qq.txt
Получаем текстовый файл с разделителем полей <Tab>, который прекрасно считывается любым табличным процессором
Код: (html5) [Выделить]
4.67    18.993  10.
                2.
                1.
4.344   17.019
2.864   17.264
1.756   16.607
1.7     16.278
        13.9
1.7
        16.278
1.756   16.607
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Объясните, как написать несложный скрипт.
« Ответ #13 : 02 Декабря 2018, 10:28:02 »
sed 's/X/X\ /'|sed 's/Y/Y\ /'| sed 's/Z/Z\ /'
Ну просто не могу игнорировать... Проститеs/[XYZ]/& /g
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

zse

  • Гость
Re: Объясните, как написать несложный скрипт.
« Ответ #14 : 02 Декабря 2018, 15:25:17 »
    — Всегда Спасибо, Azure, я как в „Королевстве кривых зеркал“ пока только „прибавление“  одолел, а „умножение“ я только постигаю :) ! 2018 Dec 02; 07:25 AM

 

Страница сгенерирована за 0.034 секунд. Запросов: 23.