Utilisation de sed pour remplacer le début de ligne lorsque la correspondance est trouvée
J'ai un fichier Java. Je veux commenter chaque ligne de code qui contient le match:
myvar
Je pense sed devrait m'aider ici
sed 's/myVar/not_sure_what_to_put_here/g' MyFile.java
Je ne sais pas quoi mettre dedans:
not_sure_what_to_put_here
que dans ce cas, je ne veux pas remplacer myVar mais la je veux insérer
//
au début de chaque ligne myVar se produit sur.
Des conseils
source d'informationauteur dublintech
Vous devez vous connecter pour publier un commentaire.
Capturer l'ensemble de la ligne qui contient
myvar
:Utiliser le
-i
option pour enregistrer les modifications dans le fichiersed -i 's/\(^.*myvar.*$\)/\/\/\1/' file
.Explication:
Si cela ressemble à l'ensemble de la ligne et si
myvar
est trouvé des résultats dans stockée dans le premier groupe, visé à un\1
. Afin de remplacer l'ensemble de la ligne\1
avec l'ensemble de la ligne précédée par 2 barres obliques//\1
bien sûr, le forwardslashes besoin de s'échapper de ne pas confondresed
donc\/\/\1
également noter que les crochets doivent s'échapper, sauf si vous utilisez l'étendue de la regex option desed
.Essayer:
ce qui signifie: si une ligne contient
myVar
remplacer le début de la ligne avec//
.Je faisais des recherches sur le même sujet et a trouvé cette solution qui est plus simple en termes de regex
sed -e '/myvar/s/^/\/\//' file
Cela ajoute
//
à la colonne 0 de la ligne avec l'appariement de formes.Cependant, j'ai été à la recherche d'une solution qui me permettra d'ajouter un caractère avant le premier caractère de la ligne (pas sur la colonne 0).