web-dev-qa-db-fra.com

Comment trouver des lignes qui commencent avec **

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).

8
Shar Hunter

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

18
Stephen Harris

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.
7
Rahul

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.

0
Beat Bolli