Поиск слова в файле и преобразование его из строчных в прописные - PullRequest
0 голосов
/ 29 октября 2019

Я работаю над сценарием оболочки, который берет подстановочный знак от пользователя и ищет совпадающие слова (например, подстановочный знак ar * находит статью и т. Д.) В файлах .txt, которые находятся в текущем рабочем каталоге. Когда он находит слова, он должен преобразовывать их из строчных в прописные (ARTICLE, ARE ...).

Я сгенерировал цикл while для проверки всех слов в файле .txt и цикл for для проверки всех файлов .txt. Цикл while читает файл .txt слово за словом. Однако он находит все слова, которые совпадают с подстановочными знаками;Я не могу преобразовать их в верхний регистр.

....
while IFS= read -r word; do
    if [[ ${word,,} == ${string,,} ]] 
    then
        echo $word #to check the words          
        sed -i "s/${word}/${word^^}" $file                  
    fi
done

Он печатает все слова идеально, но не преобразует их в верхний регистр в файле и выдает ошибку как;

"sed: -e expression #1, char 15: unterminated `s' command"

1 Ответ

1 голос
/ 29 октября 2019

Вам не хватает второго / в выражении s/old/new/. Вам также следует использовать модификатор g для замены всех совпадений в строке.

sed -i "s/${word}/${word^^}/g" $file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...