0

わかりました、md5 のリストとその隣の単語がスペースで区切られているこの問題があり、いくつかの行を除外する必要があります。

スニペットの例:

...
F08A4C9263AD215D70B9C216F0B385CB wrapup
7B286E6F0615D64ACD4A7BC3578871DD wrath
8E35BA3D27A7730840EB1694386F69A0 wrathful
096762EA6790EDA22BF2369347FD53AC wreak
56AC6677205EB591A7173BADBB610F5C wreath
A85C0CB6C0367AF9D23442DF56EC9E1C wreathe
9E44AAE612306D44B91C4162DB5C26B7 wreck
6D9C795CBB3075DC1A482F6F78DC6D68 wreckage
BD907BC4DC65934D133BD5C472B78CC0 wrench
758C70E9B6F437D49D98D92E28E95939 wrest
81A4471F73DFDA0B534F58F4E1501FAB wrestle
94183CC7C7A66338DE89DB9C7460A8A2 wretch
AFEED5CE5BACCEC17EC54E68A97CCD0F wriggle
...

すべての文字 ([AF]) が最大 2 回しか表示されないすべての行を引き出す(e)grepの正規表現が必要です。そのための例は次のようになります。

4F2048B829C2834A23832F28928DE38E turtle

誰かがこれで私を助けることができれば、私はそれをとても感謝しています!

4

2 に答える 2

1

あなたが使用することができます:

egrep -v "^\S*([A-F])\S*\1\S*\1" inputfile

これは、同じ行で 3 回繰り返される文字 AF を含まないすべての行をリストします。

編集:単語の大文字と一致しないように変更されました...

于 2013-01-02T15:41:04.347 に答える
0

あなたが言及した:

すべての文字 (したがって [AF]) が最大 2 回しか表示されないすべての行を引き出します。

私の理解では、選択した行には 0-2 [AF] が含まれている必要があります。これに基づいて、次の awk oneliner が機能するはずです。

awk  'BEGIN{FS=""}{delete a;for(i=1;i<=NF;i++)if($i~/[A-F]/){a[$i]++;if(a[$i]>2)next}}1' file

テスト

指定された入力には、要件を満たす行がないこと注意してください。だから私は最後に「カメ」行を追加しました:

kent$  echo "F08A4C9263AD215D70B9C216F0B385CB wrapup
7B286E6F0615D64ACD4A7BC3578871DD wrath
8E35BA3D27A7730840EB1694386F69A0 wrathful
096762EA6790EDA22BF2369347FD53AC wreak
56AC6677205EB591A7173BADBB610F5C wreath
A85C0CB6C0367AF9D23442DF56EC9E1C wreathe
9E44AAE612306D44B91C4162DB5C26B7 wreck
6D9C795CBB3075DC1A482F6F78DC6D68 wreckage
BD907BC4DC65934D133BD5C472B78CC0 wrench
758C70E9B6F437D49D98D92E28E95939 wrest
81A4471F73DFDA0B534F58F4E1501FAB wrestle
94183CC7C7A66338DE89DB9C7460A8A2 wretch
AFEED5CE5BACCEC17EC54E68A97CCD0F wriggle
4F2048B829C2834A23832F28928DE38E turtle"|awk  'BEGIN{FS=""}{delete a;for(i=1;i<=NF;i++)if($i~/[A-F]/){a[$i]++;if(a[$i]>2)next}}1'                          
4F2048B829C2834A23832F28928DE38E turtle
于 2013-01-02T15:49:57.583 に答える