• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

SED正则表达式[方括号]的特殊处理

武飞扬头像
lieberstraum
帮助1

今天被这个方括号懵晕了,特此记录

例如: 去除输入字符串“1[2.3]4[ab,c]”中的所有方括号和逗号:

$ echo "1[2.3]4[ab,c]"|sed -e "s/[,\]\[]//g"
1[2.3]4[ab,c]
 

It doesn't work!

原因:Regular Expressions

The <right-square-bracket> ( ']' ) shall lose its special meaning and represent itself in a bracket expression if it occurs first in the list (after an initial <circumflex> ( '^' ), if any).

解决方案:关键是要把 ] 右方括号不加escape放在首位.

$ echo "1[2.3]4[ab,c]"|sed -e "s/[][,]//g"
12.34abc

$ echo "1[2.3]4[ab,c]"|sed -e "s/[]\[,]//g"
12.34abc

$ echo "1[2.3]4[ab,c]"|sed -e "s/[],[]//g"
12.34abc
 

The order of some characters is important:

  • - should be at the end like this -]
  • [] should be like that [][other characters]
  • ' should be escaped like that '\''
  • not begin with ^ like in [^
  • not begin with [. [= [: and end with .] =] :]
  • not end with $]

References:

regex - How to escape square closing bracket in sed - Stack Overflow

Regular Expressions

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgejehk
系列文章
更多 icon
同类精品
更多 icon
继续加载