J'ai besoin de trouver si des lignes dans un fichier commencent par **
.
Je ne peux pas comprendre comment le faire parce que *
est interprété comme une carte générique par la coquille.
grep -i "^2" test.out
fonctionne si la ligne commence par un 2 mais
grep -i "^**" test.out
évidemment ne fonctionne pas.
(J'ai aussi besoin de savoir si cette ligne se termine par un )
mais n'ai pas encore tenté que).
Utilisez le \
caractère pour échapper à * pour en faire un caractère normal.
grep '^\*\*' test.out
Notez également la citation unique '
et pas double citation "
Pour empêcher la coquille en expansion des choses
Comme vous le souhaitez vérifier la ligne qui commence par **
et se termine par )
, vous pouvez combiner deux opérations grep
comme ceci,
grep '^*\*' test.out | grep ')$'
Ou avec une seule commande grep
comme ceci,
grep -E '^\*\*.*\)$' test.out
explication
^\*\*
: ligne de correspondance qui commence par **
.*
: Faites correspondre tout après **
\)$
: ligne de match qui a aussi )
au bout de la ligne.C'est la version complètement non notée: grep ^\\*\\* test.out
. Pour passer une barre oblique inverse littérale de la coque au grep, elle doit être échappée.
Cela fonctionne aussi longtemps que vous n'avez aucun fichier dans le répertoire commençant par ^\
et contenant une autre barre oblique inverse.