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

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

Оффлайн Racer

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

Оффлайн ZEN

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
Crimea is Ukraine
 

Оффлайн }{ronoTrigger

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 »
 

Теги:
 

Создание меню на bash

Автор letnab

Ответов: 18
Просмотров: 6123
Последний ответ 14 Сентября 2014, 13:23:47
от letnab
bash script - ошибка перехода в каталог с тильдой

Автор sunjob

Ответов: 18
Просмотров: 3918
Последний ответ 27 Октября 2015, 21:43:47
от vic5710
"Плавающий" виртуальный IP средствами bash

Автор skvili

Ответов: 3
Просмотров: 1408
Последний ответ 10 Августа 2018, 12:37:05
от endru
bash не инициализируются масивы

Автор starlayt

Ответов: 8
Просмотров: 2038
Последний ответ 23 Мая 2014, 11:11:30
от starlayt
bash xargs и пробелы в именах )

Автор zCirill

Ответов: 3
Просмотров: 1847
Последний ответ 25 Марта 2015, 12:33:14
от Leo