web-dev-qa-db-fra.com

Que signifie le caractère # dans: / bin / sed -e's # abc # zzz # g '?

Que signifie le caractère # dans cette ligne:

/bin/sed -e 's#abc#zzz#g'
10
Khalith Basha

C'est un séparateur, tout comme "/", c'est pareil que 's/abc/zzz/g'.

cela signifie que la recherche de "abc" le remplace par "zzz", avec un drapeau global, signifie le fait pour tous les "abc" sur la ligne, pas seulement le premier.

Vous pouvez également utiliser un séparateur alternatif pour une adresse de modèle, mais dans ce cas, vous devez l'échapper pour qu'elle soit correctement interprétée:

sed -r '\#abc#p'
14
Ravexina

C'est un délimiteur ou un séparateur. Le plus couramment utilisé est / comme dans

sed 's/old/new/' file

Mais sed prendra le premier caractère après la (les) commande (s) comme délimiteur. Vous pouvez utiliser n'importe quel caractère pratique, par exemple ...

sed 's%old%new%' file

Ceci est très utile si le fichier contient / (ou d’autres caractères de délimitation conventionnels). Vous pouvez choisir comme séparateur un caractère que vous savez que vous n’aurez pas besoin de mettre dans votre expression sed, ce qui vous évite de nombreuses échappements gênants.

Disons que vous voulez remplacer

https://askubuntu.com/questions

avec

https://askubuntu.com/posts

Vous pourriez utiliser

sed 's/https:\/\/askubuntu.com\/questions/https:\/\/askubuntu.com\/posts/' file

Mais mieux utiliser

sed 's|https://askubuntu.com/questions|https://askubuntu.com/posts|' file
24
Zanna