Bash
使用 sed 刪除字元串周圍的左方括號和右方括號
我在 Ubuntu 12.04.1 LTS 上的 bash shell 中執行這個命令。我試圖一舉刪除
[
和字元,即無需再次使用管道 sed 。]
我知道方括號在正則表達式中具有特殊含義,所以我通過在前面加上反斜杠來轉義它們。我期待的結果只是字元串
123
,但方括號仍然存在,我很想知道為什麼!~$ echo '[123]' | sed 's/[\[\]]//' [123]
如果您仔細遵循手冊,這很容易:字元類中的所有成員都失去了特殊含義(除了少數例外)。如果 ] 放在列表的首位,則 ] 將失去其特殊含義。嘗試:
$ echo '[123]' | sed 's/[][]//g' 123 $
這說:
- 外在裡面 $$ brackets $$,替換任何包含的字元,即:
]
和[
- 用空字元串替換它們中的任何一個——因此是空的替換字元串
//
,- 到處替換它們(全域)——因此是最終的
g
.同樣,無論何時包含它,都
]
必須是班級的第一名。