如何使sed模式“智能化”

时间:2012-11-29 14:57:36

标签: sed

我有一个类似的文件:

None44  DET20_22526;size=4; DET20_39906;size=2; DEX29.h_40767;size=4;    DEX27.h_779;size=6757;

目标:

None44  DET20_22526 DET20_39906 DEX29.h_40767    DEX27.h_779

只需删除“; size = * *;

即可

size =之后的数字范围为1-6757(最多)。

我一直在努力:

sed 's/;size=*;//g'

我对sed和regX的有限知识限制了我。

有人可以指出如何删除所有之间;包括;'s

如何让我的sed意识到我​​能用英语表达的内容......但是还无法编码:(

1 个答案:

答案 0 :(得分:3)

你可以尝试:

sed 's/;size=[0-9]*;//g'

这个正则表达式意味着什么?

  • s / ... / ... / g代表:用第二个表达式替换第一个表达式的每个匹配
  • 在我们的例子中,第一个表达式是;size=[0-9]*;,它应该被分解为:
    • 确切的字符串;size=,后跟
    • 范围0-9中的任何数字的零个或多个出现,后跟
    • ;
  • 第二个表达式为空,因此匹配的部分被抑制
  • 最终g是一个选项,告诉sed匹配所有匹配的部分,而不是停在第一个