Сценарии оболочки с использованием sed - PullRequest
2 голосов
/ 19 октября 2011

Пример сценария показан ниже:

#!/bin/bash
sed -i~ 's/user1/user2/g' myfile.txt

Он заменяет user1 на user2 в myfile.txt

Как я могу изменить вышеуказанный скрипт, чтобы получить подтверждение, что скрипт нашел user1 и заменил его на user2?

Обычно, если пользователь не находит user1, он должен выдать предупреждающее сообщение в командной строке.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 19 октября 2011

Альтернативой diffing after является grep до:

grep -q 'user1' myfile.txt && sed -i~ 's/user1/user2/g' myfile.txt || echo "user1 not there"

-q означает, что grep работает тихо и возвращает успех, если найден, так что тогда и только тогда он будет продолжать замену.

1 голос
/ 19 октября 2011

Попробуйте diff инструмент:

fgrep -q 'user1'  myfile.txt 2>&1 1>/dev/null
if [ "$?" -eq 0 ]; then
   echo " user1 found."
fi
...
diff -q myfile.txt myfile.txt~ 2>&1 1>/dev/null
if [ "$?" -eq 1 ]; then
   echo " Match found & Replaced."
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...