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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Нужен скрипт для удаления или замены текста  (Прочитано 545 раз)

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

Оффлайн ase66

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
Нужен скрипт для нескольких текстовых файлов, который может удалить из одной строки всё строго после символов Icon=

В этой строке есть различные комбинации англ. букв  с точкой, цифр и /

Скрипт должен действовать строго в указанной директории рекурсивно.

Возможно ли это?

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5603
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Нужен скрипт для удаления или замены текста
« Ответ #1 : 16 Октябрь 2017, 23:17:55 »
Код: Bash
  1. find /path_to_dir -name '*.txt' -exec sed -i 's/Icon=.*$/Icon=/' {} +
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ase66

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
Re: Нужен скрипт для удаления или замены текста
« Ответ #2 : 16 Октябрь 2017, 23:33:17 »
Спасибо помогло!

Хотелось бы ещё удалить всё после Icon= при условии что запись начинается строго со /snap

Вот так:

Icon=/snap и т.д.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5603
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Нужен скрипт для удаления или замены текста
« Ответ #3 : 16 Октябрь 2017, 23:54:29 »
Ну так допишите в условие sed
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3020
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Re: Нужен скрипт для удаления или замены текста
« Ответ #4 : 17 Октябрь 2017, 01:02:12 »
Главное о экранировании не забывать
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

Оффлайн ase66

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
Re: Нужен скрипт для удаления или замены текста
« Ответ #5 : 17 Октябрь 2017, 13:20:57 »
Не всё получается...

's/Icon=snap.*$/Icon=snap/' работает

а в варианте 's/Icon=/snap.*$/Icon=/snap/'
 
sed рассматривает /  как неизвестный модификатор к `s'


Как же решить вышеозначенную задачу?  Удалить всё после Icon=/snap при условии что запись начинается строго со Icon=/snap

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 1915
    • Просмотр профиля
Re: Нужен скрипт для удаления или замены текста
« Ответ #6 : 17 Октябрь 2017, 13:34:37 »
Код: Bash
  1. sed -ri 's|^(Icon=)/snap.*|\1|'

Оффлайн ase66

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
Re: Нужен скрипт для удаления или замены текста
« Ответ #7 : 17 Октябрь 2017, 13:38:47 »
Спасибо.

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3020
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Re: Нужен скрипт для удаления или замены текста
« Ответ #8 : 17 Октябрь 2017, 15:43:28 »
ase66,
Главное о экранировании не забывать
Можно испольозвать вариант renzrv или воспользоваться моим сообщением и делать:
Код: Bash
  1. find /path_to_dir -name '*.txt' -exec sed -i 's/Icon=\/snap.*$/Icon=\/snap\//' {} +
  2.  
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 1915
    • Просмотр профиля
Re: Нужен скрипт для удаления или замены текста
« Ответ #9 : 17 Октябрь 2017, 16:16:19 »
EvangelionDeath,
(Нажмите, чтобы показать/скрыть)

 

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