Bash

使用 sed 刪除字元串周圍的左方括號和右方括號

  • May 6, 2018

我在 Ubuntu 12.04.1 LTS 上的 bash shell 中執行這個命令。我試圖一舉刪除[和字元,即無需再次使用管道 sed 。]

我知道方括號在正則表達式中具有特殊含義,所以我通過在前面加上反斜杠來轉義它們。我期待的結果只是字元串123,但方括號仍然存在,我很想知道為什麼!

~$ echo '[123]' | sed 's/[\[\]]//'
[123]

如果您仔細遵循手冊,這很容易:字元類中的所有成員都失去了特殊含義(除了少數例外)。如果 ] 放在列表的首位,則 ] 將失去其特殊含義。嘗試:

$ echo '[123]' | sed 's/[][]//g'
123
$

這說:

  1. 外在裡面 $$ brackets $$,替換任何包含的字元,即:
  • ]
  • [
  1. 用空字元串替換它們中的任何一個——因此是空的替換字元串//
  2. 到處替換它們(全域)——因此是最終的g.

同樣,無論何時包含它,都] 必須是班級的第一名。

引用自:https://serverfault.com/questions/466118