Cosa significa il #
personaggio in questa riga:
/bin/sed -e 's#abc#zzz#g'
Cosa significa il #
personaggio in questa riga:
/bin/sed -e 's#abc#zzz#g'
Risposte:
È un separatore, proprio come "/"
, è lo stesso di 's/abc/zzz/g'
.
significa cercare "abc" sostituirlo con "zzz", con flag globale, significa farlo per tutti gli "abc" sulla linea, non solo il primo.
È inoltre possibile utilizzare un separatore alternativo per un indirizzo di modello, ma in tal caso, è necessario evitarlo per essere interpretato correttamente:
sed -r '\#abc#p'
È un delimitatore o un separatore. Quello più comunemente usato è /
come in
sed 's/old/new/' file
Ma sed prenderà il primo personaggio dopo il comando (i) come delimitatore. Puoi usare qualsiasi personaggio conveniente, ad esempio ...
sed 's%old%new%' file
Questo è molto utile se il file contiene /
(o altri caratteri di delimitazione convenzionali). Puoi scegliere come separatore un personaggio che sai che non avrai bisogno di mettere nella tua sed
espressione, risparmiando un sacco di fastidiose fughe.
Diciamo che vuoi sostituire
https://askubuntu.com/questions
con
https://askubuntu.com/posts
Puoi usare
sed 's/https:\/\/askubuntu.com\/questions/https:\/\/askubuntu.com\/posts/' file
Ma meglio usare
sed 's|https://askubuntu.com/questions|https://askubuntu.com/posts|' file
sbabeb
fa lo stesso di s/a/e/
.
/
può essere sostituito da un carattere alternativo in contesti diversi dals
comando (sostitutivo) - ma in tal caso deve essere evitato la prima volta, ad esempiosed '/foo/d'
(eliminare la corrispondenza delle righefoo
) diventased '\#foo#d'