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 の略: 最初の式のすべての一致を 2 番目の式に置き換える
  • この場合の最初の式は、次の;size=[0-9]*;ように分解する必要があるということです。
    • 正確な文字列;size=、その後に続く
    • 範囲内の任意の数字が 0 回以上出現し0-9、その後に続く
    • ;
  • 2 番目の式は空であるため、一致した部分は抑制されます
  • finalは、一致するすべての部分を一致させ、最初の部分で停止しないようにg指示するオプションですsed
于 2012-11-29T15:04:23.713 に答える