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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

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

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

Оффлайн ase66

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

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

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

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

Оффлайн Azure

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

Оффлайн ase66

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

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

Вот так:

Icon=/snap и т.д.

Оффлайн Azure

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

Оффлайн EvangelionDeath

  • Старожил
  • *
  • Сообщений: 1901
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Re: Нужен скрипт для удаления или замены текста
« Ответ #4 : 17 Октябрь 2017, 02: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

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

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

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


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

Оффлайн renzrv

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

Оффлайн ase66

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

Оффлайн EvangelionDeath

  • Старожил
  • *
  • Сообщений: 1901
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Re: Нужен скрипт для удаления или замены текста
« Ответ #8 : 17 Октябрь 2017, 16: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

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

 

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