2015-09-23 3 views
0

Je recherche un mot/motif dans un fichier, si un tel motif n'existe pas dans un fichier, alors je veux imprimer/echo " - ". Pouvons-nous le faire en ligne de commande dans une seule commande doublée?Si la commande ne renvoie rien, imprimez/renvoyez une instruction à STDOUT dans le shell csh

grep word <file> | <command to return "-" if "word" not present in file> 

même si le script ne retourne rien, echo "-"

python script.py | <command to return "-" if script returns nothing/NULL 

Répondre

1

Si vous voulez vérifier qu'il n'y a pas de sortie pour une commande quel que soit son returnCode alors vous devriez vérifier qu'il n'y a pas de sortie, d'une façon de le faire est :

awk '{print} END {if (NR == 0) print "-"}' 

Ainsi, par exemple:

$ grep - /dev/null | awk '{print} END {if (NR == 0) print "-"}' 
- 
$ echo some output | awk '{print} END {if (NR == 0) print "-"}' 
some output 
+0

Ne fonctionne que pour moi si je supprime le préfixe '$' 'NR'. – cyberSingularity

0

Cela peut être fait par commande suivante:

grep word file.txt || echo "-" 

Si le mot est présent dans le fichier, alors il affichera la ligne du fichier d'autre imprimera -.

Si la commande est le script alors:

ret=`python script.py`; if [[ "$ret" ]];then echo "$ret"; else echo "-"; fi 
+0

Merci .. cela a fonctionné! comment pouvons-nous faire la même chose si le script ne renvoie rien, en faire l'écho .. exemple .. python script.py | user1228191

+0

Quelque chose comme 'python script.py || echo "-" 'vous devriez essayer. – snoop

+0

Super !! Je viens de vérifier, la commande que vous avez donné pour le script a fonctionné pour bash shell. Vous cherchez pour shell C? – user1228191