Что означает символ # в: / bin / sed -e # abc # zzz # g '?

10

Что означает символ # в этой строке:

/bin/sed -e 's#abc#zzz#g'
    
задан Khalith Basha 17.06.2017 в 20:23
источник

2 ответа

14

Это разделитель, как "/" , он такой же, как 's/abc/zzz/g' .

это означает, что поиск «abc» заменит его на «zzz», с глобальным флагом, означает сделать это для всех «abc» s на строке, а не только для первой.

Вы также можете использовать альтернативный разделитель для адреса шаблона, но в этом случае вам нужно избежать его, чтобы он правильно интерпретировался:

sed -r '\#abc#p'
    
ответ дан Ravexina 17.06.2017 в 20:26
источник
24

Это разделитель или разделитель. Наиболее часто используемым является / , как в

sed 's/old/new/' file

Но sed примет первый символ после команды (-ов) в качестве разделителя. Вы можете использовать любой удобный символ, например ...

sed 's%old%new%' file

Это очень полезно, если файл содержит / (или другие обычные разделительные символы). Вы можете выбрать в качестве разделителя некоторый символ, который, как вы знаете, вам не нужно будет вводить в выражение sed , что избавит вас от многих неприятных побегов.

Предположим, вы хотите заменить

https://askubuntu.com/questions

с

https://askubuntu.com/posts

Вы можете использовать

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

Но лучше использовать

sed 's|https://askubuntu.com/questions|https://askubuntu.com/posts|' file
    
ответ дан Zanna 17.06.2017 в 20:27