gpt4 book ai didi

bash - 在正则表达式中的字符类中使用方括号

转载 作者:行者123 更新时间:2023-11-29 09:22:56 25 4
gpt4 key购买 nike

我有一个字符串:

['A', 'B']

我需要删除所有 [] 字符。最后的结果应该是

'A' 'B'

下面是我尝试过的所有内容以及结果的列表

我尝试过的命令

user@vm:~$ echo "['A', 'B']" | sed -r 's/[\[\],]//g'
['A', 'B']

user@vm:~$ echo "['A', 'B']" | sed -r 's/[[],]//g' # unescaped
['A', 'B']

user@vm:~$ echo "['A', 'B']" | sed -r 's/[\[\]]//g' # removed ","
['A', 'B']

user@vm:~$ echo "['A', 'B']" | sed -r 's/[,]//g' #removed "[" and "]"
['A' 'B']

user@vm:~$ echo "['A', 'B']" | sed -r 's/[[,]//g' # removed "]"
'A' 'B']

显然,它们都不起作用。但是,这些命令确实:

user@vm:~$ echo "['A', 'B']" | sed -r 's/[],[]//g'
'A' 'B'

user@vm:~$ echo "['A', 'B']" | sed -r 's/[][,]//g'
'A' 'B'

为什么这样做?上下命令的区别:

  • [, ]没有转义
  • 顺序不同(]之前[)

为什么顺序很重要?

最佳答案

来自 info sed(另见 https://www.gnu.org/software/sed/manual/sed.html#Character-Classes-and-Bracket-Expressions)

A leading '^' reverses the meaning of LIST, so that it matches any single character not in LIST. To include ']' in the list, make it the first character (after the '^' if needed), to include '-' in the list, make it the first or last; to include '^' put it after the first character.

如评论中所述,tr 更适合

$ echo "['A', 'B']" | tr -d '[],'
'A' 'B'

关于bash - 在正则表达式中的字符类中使用方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44053605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com