La grep
commande donne à un état de sortie:
$echo "foo.bar" | grep -o foo
foo
$echo $?
0
$echo "foo.bar" | grep -o pop
$echo $?
1
Mais je dois utiliser sed
et j'ai réalisé qu'il n'a pas de statut de sortie:
$echo "foo.bar" | sed 's/bar.*$//'
foo.
$echo $?
0
$echo "foo.bar" | sed 's/pop.*$//'
foo.bar
$echo $?
0
Je sais que je devrais jouer avec l' -q
option, mais je n'ai pas réussi.
command-line
sed
Josef Klimuk
la source
la source
sed
très certainement a un statut de sortie, il ne fait tout simplement pas ce dont vous avez besoin ici. Si lased
commande échoue, par exemple, si vous essayez de l'exécuter sur un fichier auquel vous n'avez pas accès en écriture ou qui n'existe pas, sesed
fermera avec un état de sortie différent de 0. Le statut de sortie indique simplement sised
vous avez réussi à faire ce que vous lui avez demandé de faire et s'il aecho "foo.bar" | sed 's/pop.*$//'
été correctement exécuté. Il a supprimé toutes les lignes avecpop
. Qu'il n'y ait pas de telles lignes est sans importance, la commande fonctionnait toujours.Réponses:
Vous pouvez utiliser q n pour quitter avec le statut de sortie n - mais pour le rendre utile, vous devrez également utiliser des branchements et un contrôle de flux :
Il est probablement préférable de choisir une valeur pour n distincte de l'une des valeurs de statut de sortie standard:
Donc par exemple
tandis que
Si vous souhaitez omettre l'impression par défaut de l'espace de motif, remplacez-le
q
parQ
(notez qu'ilQ
s'agit d'une extension GNU).la source
Voici comment rechercher des expressions rationnelles avec sed et mettre en surbrillance les correspondances , ou retourner le code de sortie (5) si aucune correspondance n'a été trouvée:
C'est input.txt:
Voici ma fonction pour tout imprimer + surligner les correspondances + retourner le code de sortie:
Lorsqu'il n'y a pas de correspondance, il renverra le code de sortie (5). Vous pouvez l' utiliser avec chat et pipe | ainsi que:
* Pas de résultat trouvé *
Merci à https://unix.stackexchange.com/a/405725/43233 - Je l'utilise + l'option de sortie sed.
la source