0

我有一个像这样的文件:

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 的了解有限。

有人可以指出如何删除 ; 之间的所有内容,包括 ; 的

或者

如何让我的 sed 意识到我可以用英语说什么......但还不能编码:(

4

1 回答 1

3

你可以试试:

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

这个正则表达式是什么意思?

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