debian.org / О Debian Где взять Debian Поддержка Уголок разработчика Новости Wiki

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

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

Оффлайн Racer

  • Новичок форума
  • Topic Author
  • Сообщений: 3
Bash скрипт замена одного слова
« : 14 Декабрь 2016, 22:08:07 »
Здравствуйте!
Народ, вы конечно будете смеяться но ...
Как реализовать скрипт такого плана? Нажимаешь на клаве клавишу "А" в файле "text.txt" ищется слово "Вова" и заменяется на "Дима", при очередном нажатии на "А" Диму сменяет Вова и так по кругу?
Что-то мне подсказывает, что нужно использовать sed -i s/Вова/Дима/ /путь/text.txt и цикл
Не кидайтесь тапками, я только в начале пути.
Да прибудет с Вами Сила!
 

Оффлайн ZEN

  • Местный житель
  • ***
  • Сообщений: 217
Re: Bash скрипт замена одного слова
« Ответ #1 : 14 Декабрь 2016, 23:14:50 »
#!/usr/bin/env bash

test -w "$1" || {
    echo "Usage: $0 /path/to/writable/file";
    exit 1;
}

file="$1";
counter=0;

while read -r -N 1 -s input; do
    let counter+=1;
    case $input in
        a|A)
            if [[ $(($counter % 2)) -eq 0 ]];
            then
                sed -i 's/Вова/Дима/g' "$file";
            else
                sed -i 's/Дима/Вова/g' "$file";
            fi
        ;;
        *)
            break;
        ;;
    esac
    cat "$file";
done
бог создал труд и обезьяну
чтоб получился человек
а вот пингвина он не трогал
тот сразу вышел хорошо
 

Оффлайн }{ronoTrigger

  • Пользователь
  • *
  • Сообщений: 18
Re: Bash скрипт замена одного слова
« Ответ #2 : 14 Декабрь 2016, 23:59:21 »
Что-то код ниже не срабатывает. Файл "text" в домашнем каталоге. Команды sed -i 's/Вова/Дима/g' "text" и sed -i 's/Дима/Вова/g' "text" выполненные отдельно работают.
#!/usr/bin/env bash

test -w "$1" || {
    echo "Usage: $0 text";
    exit 1;
}

file="$1";
counter=0;

while read -r -N 1 -s input; do
    let counter+=1;
    case $input in
        a|A)
            if [[ $(($counter % 2)) -eq 0 ]];
            then
                sed -i 's/Вова/Дима/g' "text";
            else
                sed -i 's/Дима/Вова/g' "text";
            fi
        ;;
        *)
            break;
        ;;
    esac
    cat "text";
done

а если попробовать
#!/bin/sed -f
s/Вова/Дима/g
t
s/Дима/Вова/g
с запуском
./путь/script.sh -i /путь/text
но к вставляемому имени прибавить озвучку имени Вова или Дима в зависимости от того кого вставили.
Озвучку через, к примеру Festival или RHVoice
« Последнее редактирование: 15 Декабрь 2016, 00:28:21 от }{ronoTrigger »
 

Русскоязычное сообщество Debian GNU/Linux

Re: Bash скрипт замена одного слова
« Ответ #2 : 14 Декабрь 2016, 23:59:21 »


Теги:
 

арифметика с временем на bash [РЕШЕНО]

Автор A_STAS

Ответов: 8
Просмотров: 6075
Последний ответ 02 Апрель 2013, 21:47:06
от A_STAS
bash

Автор MERCURY

Ответов: 3
Просмотров: 1196
Последний ответ 27 Июль 2015, 13:22:41
от Malaheenee
получить все последующие строки после 10 совпадения bash

Автор zCirill

Ответов: 1
Просмотров: 996
Последний ответ 27 Июнь 2016, 05:33:00
от endru
Помогите собрать код резервного копирования на bash

Автор Tesla

Ответов: 19
Просмотров: 2099
Последний ответ 08 Февраль 2015, 21:39:13
от Tesla
Создание меню на bash

Автор letnab

Ответов: 18
Просмотров: 3946
Последний ответ 14 Сентябрь 2014, 13:23:47
от letnab