Cosa significa il carattere # in: / bin / sed -e 's # abc # zzz # g'?


Risposte:


14

È 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'

24

È 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 sedespressione, 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

Potrebbe valere la pena notare che almeno in GNU sed, /può essere sostituito da un carattere alternativo in contesti diversi dal scomando (sostitutivo) - ma in tal caso deve essere evitato la prima volta, ad esempio sed '/foo/d'(eliminare la corrispondenza delle righe foo) diventased '\#foo#d'
steeldriver

@steeldriver davvero! - Ho visto che Ravexina lo ha aggiunto alla sua risposta, quindi forse lascerò il mio :)
Zanna,

1
Non è importante se lo stream contiene il carattere separatore. Ciò che è importante è se la stringa di ricerca o la stringa di sostituzione contiene il carattere separatore.
Kasperd,

@kasperd oh sì, vero. Ho modificato leggermente :)
Zanna il

La risposta di @ Zanna è più precisa: il primo carattere dopo il comando "s" determina il separatore utilizzato in questo comando. Puoi usare qualsiasi personaggio qui. sbabebfa lo stesso di s/a/e/.
rexkogitans,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.