1

3Dが続かない場合にのみ、等号を削除したいと思います。ここに例があります。

NB2HI4B2F4XWM3LNFZCGK3DJOZSXE6L=PNZSS4Y3PFZZWGSZB5GUTGKPLE=ONZXA33PNZSXEQ

だからこれは

NB2HI4B2F4XWM3LNFZCGK3DJOZSXE6LPNZSS4Y3PFZZWGSZB5GUTGKPLEONZXA33PNZSXEQ

可能であれば、私は解決策をとることができawkますsedか?ここにその方法についての説明がたくさんあることは知っていますが、正規表現は最初はそれほど簡単ではありません。

4

4 に答える 4

1

残念ながら、ルックアラウンドsedawkサポートもされていません。ここでは、3Dが続かないすべてに一致するように、ネガティブルックアヘッドを使用する必要があります。とは、ルックアラウンドをサポートします。=(?!3D)pythonperl

片道python

>>> import re
>>> print re.sub('=(?!3D)','','=3D=3=1=D3D====3D')
=3D31D3D=3D

片道perl

$ perl -pe 's/=(?!3D)//g' <<< "=3D=3=1=D3D====3D" 
=3D31D3D=3D
于 2013-03-11T18:10:48.100 に答える
0

汚くて速いawkワンライナー:

awk '{gsub(/=3D/,"\x99");gsub(/=/,"");gsub(/\x99/,"=3D")}1' file

テスト:

kent$  echo "====xxx==yy=3D=3Dyy==zz=3D="|awk '{gsub(/=3D/,"\x99");gsub(/=/,"");gsub(/\x99/,"=3D")}1'     
xxxyy=3D=3Dyyzz=3D
于 2013-03-11T18:01:08.987 に答える
0

もう1つ:

awk 'NR>1 && /^3D/{print RS}1' RS=\\= ORS= file
于 2013-03-11T19:39:46.410 に答える
0

これはあなたのために働くかもしれません(GNU sed):

sed 's/=3D/\n/g;s/=//g;s/\n/=3D/g' file
于 2013-03-12T13:03:00.350 に答える