Я хочу удалить строку из .txt файла с помощью grep и функций sed, но вывод, который я получаю, не изменяет ни одной моей информации в текстовом файле. Какие-либо предложения о том, как получить желаемый вывод?Спасибо.
function remove_movie
{
echo "Please Key in Title of movie"
read title
echo "Please Key in the Year of movie"
read year
echo ""
grep ".*$title.*$year" movieDB.txt >/dev/null 2>&1
if [ "$?" = "0" ]
then
sed -i '/$title/d' movieDB.txt
echo $movieDB " ' $title 'movie deleted successfully "
else
echo "The movie $title does not exist."
fi
}
Некоторые дополнительные вещи:
1 function remove_movie 2 { 3 echo "Please Key in Title of movie" 4 read title 5 echo "Please Key in the Year of movie" 6 read year 7 echo "" 8 grep ".*$title.*$year" movieDB.txt >/dev/null 2>&1 9 if [ "$?" = "0" ] 10 then 11 sed -i '/$title/d' movieDB.txt ^––SC2016 Expressions don't expand in single quotes, use double quotes for that. 12 echo $movieDB " ' $title 'movie deleted successfully " ^––SC2154 movieDB is referenced but not assigned. ^––SC2086 Double quote to prevent globbing and word splitting. 13 else 14 echo "The movie $title does not exist." 15 fi 16 }
Все, что я сделал, должно было изменить одинарные кавычки на двойные кавычки и функцию, в которой я нуждаюсь работавший хорошо. Спасибо @steeldriver для указания на это. Для статуса выхода sed
указанный @waltinator будет работать над ним также так, чтобы я мог получить программу как ошибку, бесплатную как возможную.
Еще раз спасибо @steeldriver и @waltinator :)
function remove_movie
{
echo "Please Key in Title of movie"
read title
echo "Please Key in the Year of movie"
read year
echo ""
grep ".*$title.*$year" movieDB.txt >/dev/null 2>&1
if [ "$?" = "0" ]
then
sed -i "/$title/d" movieDB.txt
echo $movieDB " ' $title 'movie deleted successfully "
else
echo "The movie $title does not exist."
fi
}