Je pense que vous souhaitez ajouter un préfixe à votre chaîne de recherche. Si le mot que vous essayez de remplacer sera toujours précédé d'un espace:
sed -i 's/ VGHIER_TSV_WB798\./ "VGHIER_TSV_WB798"./g'
De manière plus générique, vous pouvez utiliser le groupe regex [[:space:]]
pour couvrir les cas d'espaces ou de tabulations, etc. (voir la man isspace
liste complète).
sed -i 's/\([[:space:]]\)VGHIER_TSV_WB798\./\1"VGHIER_TSV_WB798"./g'
Dans ce cas, nous devions ajouter une complexité supplémentaire en créant un groupe de regex utilisant les parenthèses et en utilisant une référence arrière \1
pour être sûr de ne pas perdre le caractère exact lors du remplacement. Il existe également une classe regex [[:punct:]]
pour les caractères de ponctuation, au cas où le mot serait parfois précédé de l'un d'entre eux. Voir man isspace
pour une liste complète et détaillée de ce que couvre chaque classe de caractères regex.
Voici un exemple de solution plus complexe pour couvrir le cas de préfixes de ponctuation possibles:
sed -i 's/\([[:space:]]\|[[:punct:]]\)VGHIER_TSV_WB798\./\1"VGHIER_TSV_WB798"./g'
Ceci utilise la directive regex |
(avec une barre oblique inverse pour sed
) pour indiquer une alternative.
Enfin, si le mot sera toujours le premier élément de la ligne, utilisez la ^
regex pour exiger que:
sed -i 's/^VGHIER_TSV_WB798\./"VGHIER_TSV_WB798"./g'
Et oui, pour tout ce qui précède, vous pourriez avoir "groupé" ed et "référencé en arrière" votre chaîne:
sed -i 's/^\(VGHIER_TSV_WB798\)\./"\1"./g'
sed -i 's/\([[:space:]]\|[[:punct:]]\)\(VGHIER_TSV_WB798\)\./\1"\2"./g'
sed
utilisez-vous?