Программирование Shell с помощью sed для удаления строки из txt файла

Я хочу удалить строку из .txt файла с помощью grep и функций sed, но вывод, который я получаю, не изменяет ни одной моей информации в текстовом файле. Какие-либо предложения о том, как получить желаемый вывод?Спасибо.

  • И заголовок и год объявляется как массив;
  • Формат информации в .txt файле (заголовок): (год): (представления): (оценка)

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
}
2
задан 12 July 2015 в 15:31

2 ответа

Некоторые дополнительные вещи:

   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  }

Источник

1
ответ дан 2 December 2019 в 02:56

Все, что я сделал, должно было изменить одинарные кавычки на двойные кавычки и функцию, в которой я нуждаюсь работавший хорошо. Спасибо @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
}
2
ответ дан 2 December 2019 в 02:56

Другие вопросы по тегам:

Похожие вопросы: