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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Bash скрипт замена одного слова  (Прочитано 963 раз)

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

Оффлайн pspvideo

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Bash скрипт замена одного слова
« : 14 Декабрь 2016, 22:31:33 »
Здравствуйте!
Народ, вы конечно будете смеяться но ...
Как реализовать скрипт такого плана? Нажимаешь на клаве клавишу "А" в файле "text.txt" ищется слово "Вова" и заменяется на "Дима", при очередном нажатии на "А" Диму сменяет Вова и так по кругу?
Что-то мне подсказывает, что нужно использовать

sed -i s/Вова/Дима/ /путь/text.txtи цикл

Не кидайтесь тапками, я только в начале пути.
Да прибудет с Вами Сила!

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5660
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Bash скрипт замена одного слова
« Ответ #1 : 14 Декабрь 2016, 22:44:39 »
Нажимаешь на клаве клавишу "А"
Вряд ли это будет именно «А», а какая-нибудь комбинация (например Сtrl+Shift+A) иначе как обычную «А» вводить?
нужно использовать
Можно и через sedsed -i 's/Вова/Дима/g;t;/s/Дима/Вова/g' путь/text.txt==все Димы меняются на Вовы, а Вовы на Димы. Или что-то другое имелось ввиду?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 603
    • Просмотр профиля
Re: Bash скрипт замена одного слова
« Ответ #2 : 14 Декабрь 2016, 22:48:24 »
Код: [Выделить]

sed -i s/Вова/Дима/ /путь/text.txt

и цикл
без цикла
почему не попробывал, без "-i" ?
sed 's/Вова/Дима/' /путь/text.txt

Punko

  • Гость
Re: Bash скрипт замена одного слова
« Ответ #3 : 14 Декабрь 2016, 22:52:29 »
snowin, аргумент
делает изменения "по месту", в том же файле.

и да, pspvideo, цикл не нужен. Просто добавьте g:


sed -i s/Вова/Дима/g /путь/text.txt

это заменит все вхождения.
« Последнее редактирование: 14 Декабрь 2016, 22:59:35 от Punko »

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 603
    • Просмотр профиля
Re: Bash скрипт замена одного слова
« Ответ #4 : 14 Декабрь 2016, 22:57:00 »
делает изменения "по месту", в том же файле.
именно поэтому я и просил его без "-i", дабы он смог убедиться в правильности работы однострочника, прежде чем вносить изменения в файл

Оффлайн pspvideo

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: Bash скрипт замена одного слова
« Ответ #5 : 14 Декабрь 2016, 23:01:48 »
sed -i s/Boвa/Дима/ text/g
sed: невозможно прочитать text/g: Это не каталог

Это действительно будет одна из клавиш на клаве. И кадый раз "президенты" меняют друг друга

Оффлайн snowin

  • Активист
  • *
  • Сообщений: 603
    • Просмотр профиля
Re: Bash скрипт замена одного слова
« Ответ #6 : 14 Декабрь 2016, 23:04:15 »
pspvideo, посмотри внимательнее,
Punko, уже это исправил

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5660
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Bash скрипт замена одного слова
« Ответ #7 : 14 Декабрь 2016, 23:06:23 »
будет одна из клавиш на клаве
Ну настроите через «горячие клавиши» или xdotool поставите.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Punko

  • Гость
Re: Bash скрипт замена одного слова
« Ответ #8 : 14 Декабрь 2016, 23:08:35 »
pspvideo, это вы из файлового менеджера или из терминала?
И таки да, я опечатался, исправьте, пожалуйста.

Оффлайн pspvideo

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: Bash скрипт замена одного слова
« Ответ #9 : 14 Декабрь 2016, 23:11:08 »
Да вы как с проффесором, а я плавец (плаваю только)
хотелось бы что-то видом
#!/bin/bash
..........

Да простят меня, за простоту ...

Пользователь добавил сообщение 14 Декабрь 2016, 23:13:33:
xbindkeys работать будет на исполнение скрипта
« Последнее редактирование: 14 Декабрь 2016, 23:13:33 от pspvideo »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5660
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Bash скрипт замена одного слова
« Ответ #10 : 14 Декабрь 2016, 23:18:19 »
Код: Bash
  1. #!/bin/sed -f
  2. s/Вова/Дима/g
  3. t
  4. s/Дима/Вова/g
« Последнее редактирование: 14 Декабрь 2016, 23:23:24 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн pspvideo

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: Bash скрипт замена одного слова
« Ответ #11 : 14 Декабрь 2016, 23:35:52 »
#!/bin/sed -f
s/Вова/Дима/g
t
s/Дима/Вова/g

Что это? Падон но где тут указание на файл?

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5660
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Bash скрипт замена одного слова
« Ответ #12 : 14 Декабрь 2016, 23:38:43 »
Запишите так/путь к скрипту/script.name -i /путь/text.txt
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн pspvideo

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: Bash скрипт замена одного слова
« Ответ #13 : 15 Декабрь 2016, 00:10:45 »
Спасибо! Всё класс! Azure - гениально краток

 

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