Я понятия не имею, как я могу это сделать. Мне нужно сделать опцию меню, где вы можете найти контакт по его нику, а затем изменить его данные. Например:Shell scripting: Список контактов
Имя - Ник - Телефон - Mail
Джон - Джонни - 123456789 - [email protected]
То, что я до сих пор это:
add(){
read -e -p "Name: " name
read -e -p "Nick: " nick
read -e -p "Phone: " phone
read -e -p "Email: " mail
echo $name "-" $nick "-" $phone "-" $mail >> list
}
mod(){
read nick
grep $nick list
#Don't know how to continue this... :-/
}
Эта функция также может использоваться для поиска информации о пользователе. Поэтому я думаю, что могу передать результат на temp, измениться там, а затем передать информацию в исходный файл ... но не уверен, что это будет лучший вариант, и если я знаю, как это сделать.
Также мне нужно сделать еще несколько вариантов: удалить контакт, добавить контакт и функцию, которая должна выглядеть, если есть пустые строки (удалить их), контакты, которые имеют только NICK (удалить и сохранить reg).
Использование тире в качестве разделителя не прочный, люди имеют дефисом имена, номера телефонов , и адреса электронной почты. Я бы предложил либо разделитель табуляции, либо CSV (со всеми его идиотическими соглашениями, он достаточно стандартный и хорошо поддерживается инструментами). – tripleee
Чтобы прочитать строки из файла с каналами, 'echo $ * | при чтении l; делать ...; done'; альтернативно, для этой цели существует целая команда команд Unix (созданная в ранние годы - одна из причин популярности Unix - люди любили свои возможности обработки текста): 'cut',' ex', 'fmt',' fold ',' join', 'awk',' paste', 'sed',' sort', 'tr',' uniq', 'vi',' xargs'. Являются ли фиксированные ширины столбцов не родным подходом к проблеме CRUD записи, а не CSV? Есть ли какая-то особая причина, по которой вам нужно использовать сценарий оболочки, модуль perl разобрал бы это в один миг. – user5321531