2

同様の行があります。最初の...行を削除したいのですが、のような一意の行ではありません http://www.filefactory.com/file/a181d18/n/...nimal_2010_.rar。I want delete the second similar rowに2 番目が到着するまで、同様の行

を検討します。どのようにできるのか?...

http://rapidshare.com/files/152133956/2005_-_Candlemass.part1.rar (not delete)
http://rapidshare.com/files/152133956/2005...emass.part1.rar --> similar (delete)

http://www.filefactory.com/file/a181d18/n/...nimal_2010_.rar -->unique (not delete)

http://www.shragle.com/files/9baa908b/Bvdub-The_First_Day-%2528HN031%2529-2012.rar(not delete)
http://www.shragle.com/files/9baa908b/Bvdu...1%2529-2012.rar --> similar (delete)

Windowsでsednotepad ++を使用しています

私はこの正規表現を使用してみます:

Find what:         ((?<=\n)|^)([^\n]{40})([^\n]*\n)(.*\n)?\2[^\n]*($|\n)
Replace with:      \2\3\4

それは機能しますが、行が上下にある場合にのみ機能しますが、このタイプの文字列をランダムな順序で検出する正規表現もあります。可能です?

4

2 に答える 2

3

これはうまくいくかもしれません(GNU sed):

 sed ':a;$!N;/^\([^\n]*\)[^\n]*\n\1\.\.\./s/\n.*//;ta;P;D' file

説明:

  • :aループ地名ホルダー
  • $!N最後の行でない限り、改行を追加してから次の行を現在の行に追加します。
  • /^\([^\n]*\)[^\n]*\n\1\.\.\./ほぼ重複する行を探します。
  • s/\n.*//前の行を削除します。
  • ta最後の置換が true の場合は gotoa
  • Pパターン空間の最初の行を印刷します。
  • Dパターンスペースの最初の行を削除します (空でない限り次の行を取得しません)

ランダムに並べられた文字列を照合するには、awk を使用します。

awk '/\.\.\./{o=$0;sub(/\.\.\..*/,"");a[o]=$0;next}{b[$0]}END{for(x in a){for(y in b){if(y ~ a[x]){delete a[x]}}}for(x in a)print x;for(x in b)print x}' file 
于 2012-07-09T19:42:44.103 に答える
2

Cygwinを入手して(まだ入手していない場合)、実行することをお勧めしますsort -u。これにより、入力が並べ替えられ、繰り返される行が削除されます。ただし、これは順序が重要でない場合にのみ機能します。

于 2012-07-10T07:23:27.120 に答える