Bash скрипт замена одного слова

Автор Racer, 14 декабря 2016, 22:08:07

« назад - далее »

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

Racer

Здравствуйте!
Народ, вы конечно будете смеяться но ...
Как реализовать скрипт такого плана? Нажимаешь на клаве клавишу "А" в файле "text.txt" ищется слово "Вова" и заменяется на "Дима", при очередном нажатии на "А" Диму сменяет Вова и так по кругу?
Что-то мне подсказывает, что нужно использовать sed -i s/Вова/Дима/ /путь/text.txt и цикл
Не кидайтесь тапками, я только в начале пути.
Да прибудет с Вами Сила!

ZEN

#!/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
Crimea is Ukraine

}{ronoTrigger

#2
Что-то код ниже не срабатывает. Файл "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