我有一个名为annuaire.txt的文件,其中包含用户使用read输入的记录,我想搜索特定行$var,如$nomPersonne,我使用了if grep -q $recherche $prenomPersonne annuaire.txt
,但没有工作。
就像我有一个读命令用户可以输入一个字母,他要找什么,但只有在一行中的文件该行是这些变量之一:$nomPersonne $prenomPersonne $编号办公室$编号电话$地址电子邮件
function ajoutPersonne(){
read -p "Saisir le nom : " nomPersonne
read -p "Saisir le prénom : " prenomPersonne
read -p "Saisir le numéro de bureau : " numBureau
read -p "Saisir le numéro de téléphone : " numTelephone
read -p "Saisir votre adresse email : " adresseEmail
echo "$nomPersonne,$prenomPersonne,$numBureau,$numTelephone,$adresseEmail" >> annuaire.txt
}
function rechercherFiche(){
read -p "Rechercher : " recherche
if grep -q $recherche $prenomPersonne annuaire.txt
then
echo "$(grep -c $recherche annuaire.txt) resultats trouvés !"
grep -r $recherche annuaire.txt
else
echo "Non trouvée dans l'annuaire."
fi
}
这是法语的,不要介意变量的名字。
AJLI,Zakaria,10,1234567890,bbb@ajli.fr
pers,perss,20,2345446675,ccc@pers.fr
potion,asterix,9,111111111,ddd@potion.fr
marmite,obelix,33,8687678576,yyy@marmite.fr
1条答案
按热度按时间rsl1atfo1#
你不需要在你的grep中使用prenomPersonne。
我建议的脚本编辑(基于评论的第二次迭代)如下所示:
这种方法只访问“annuaire.txt”文件一次,而您原来的方法访问了3次,在第一次尝试时将结果保存为变量可以减少总体开销。
如果要同时搜索名字和姓氏,则语句应为:
或者你可以用两个数据点来做:
double grep允许可能的反向输入,但仍然会给予有效的结果。