Я пытаюсь обновить файл в Bourne Shell. Пользователь вводит имя, а затем запрашивает изменение имени, возраста и курсов. Вот часть кода я написал:Использование Sed для обновления текста в оболочке Bourne
echo "please enter the name: \c"
read updateInput
updateNumber=$(grep -cwi "$updateInput" database.txt)
updateRecord=$(grep -i "$updateInput" database.txt)
test=$(! grep -i "$updateInput" database.txt)
if [ "$updateNumber" -gt "1" ]
then
echo "ambiguous input"
elif [ "$updateRecord" = "" ]
then
echo "record not found"
else
lineNumber=$(grep -ni $updateInput database.txt | cut -f1 -d:)
grep -i $updateInput database.txt > tmp
read first last age course1 course2 < tmp
echo "record found, enter new value now:"
echo "name ($first $last): \c"
read uFirst uLast
if [ "$uFirst" != "" ]
then
sed "$lineNumber s/$first/$uFirst/" database.txt
fi
if [ "$uLast" != "" ]
then
sed "$lineNumber s/$last/$uLast/g" database.txt
fi
При запуске СЭД выводит правильный вывод с правильными вещами изменилось, но это на самом деле не обновляет файл базы данных на всех. Я пробовал разыгрывать всевозможные вещи, но ничего не работает. Если бы кто-то мог указать мне в правильном направлении, это было бы потрясающе. Большое спасибо :)
Да, '-i' отсутствует в коде – danza
Когда я использую -i, я получаю эту ошибку:" sed: 1: "database.txt": дополнительные символы в конце команды d "@danza – Josephine
DON ' Проведите эксперименты в реальном текстовом файле! :) Я думаю, что он берет 'database.txt' как команду. сделайте некоторый эксперимент с sed из командной строки в другом файле, а затем вернитесь к своему скрипту – danza