2010-10-08 6 views
0

Je veux lancer un script en unix qui cherchera un motif spécifique dans un argument passé. L'argument est un seul mot, dans tous les cas. Je ne peux pas utiliser grep, car grep ne fonctionne que sur la recherche dans les fichiers. Y at-il une meilleure commande unix qui peut m'aider?Comment utiliser grep sur un seul mot sous UNIX?

Répondre

5

Grep peut rechercher si les fichiers, ou il peut travailler sur stdin:

 
$ echo "this is a test" | grep is 
this is a test 
2

Selon ce que vous faites peut-être que vous préférez utiliser la correspondance de motif de bash:

# Look for text in $word 
if [[ $word == *text* ]] 
then 
    echo "Match"; 
fi 

ou expressions régulières:

# Check is $regex matches $word 
if [[ $word =~ $regex ]] 
then 
    echo "Match"; 
fi 
1

vous pouvez également utiliser case/esac. Pas besoin d'appeler des commandes externes (pour votre cas)

case "$argument" in 
    *text*) echo "found";; 
esac 
0
if echo $argument | grep -q pattern 
then 
    echo "Matched" 
fi 
0

mon dossier est:

$ cat > log 
loga 

hai how are you loga 

hai 

hello 

loga 

Ma commande est:

sed -n '/loga/p' log 

Ma réponse est:

loga 

hai how are you loga 

loga