Я делаю некоторые предположения, потому что я не знаю, каков формат вашего файла данных. Я предполагаю, что поле id
является первым полем, а файл разделен запятыми. Если я ошибаюсь, вы можете изменить нижеприведенное, чтобы соответствовать вашим потребностям.
Лично мне нравится использовать grep -v
для решения этой проблемы. При запуске --help
:
-v, --invert-match select non-matching lines
эта строка будет выводить каждую строку файла, которая не соответствует вашему шаблону.
id="$1"
grep -v "^${id}," phonebook.dat > phonebook.temp
mv phonebook.temp phonebook.dat
Шаблон состоит из
^
: начало строки ${id}
: ваша переменная ,
: наш предполагаемый разделитель
причина указания начало строки до первого разделителя состоит в том, чтобы избежать удаления записей, где введенный идентификатор ($1
) является подстрокой других идентификаторов. Вы не хотели бы вводить 22 и удалять идентификатор 22, а также идентификатор 122.