1

次のような数千行を含むテキスト ファイルがあります。

ファイル:

abc: bla1 bla1 bla1... 
cde: bla bla bla... 
ghk: bla1 bla1 bla1... 
lmn: bla bla bla...
abc: bla2 bla2 bla2... 
bcd: bla bla bla... 
ghk: bla2 bla2 bla2... 
xyz: bla bla bla...

同じ項目 ( as ) で始まるすべての行をマージして、1 and 5, 3 and 7次のような新しいテキスト ファイルを作成します。

新しいファイル:

abc: bla1 bla1 bla1... * abc: bla2 bla2 bla2... 
cde: bla bla bla... 
ghk: bla1 bla1 bla1... * ghk: bla2 bla2 bla2...
lmn: bla bla bla...
bcd: bla bla bla...   
xyz: bla bla bla...

regexこれをand/orを使用して解決できるかどうか疑問に思ってgrepいます。そうであれば、どうすれば解決できますか?

私はgrepTextWrangler を使っているのでよく知っていますが、他のテキスト エディターでも問題ありません。

大変助かりました。

4

3 に答える 3

2

順序が重要でない場合は、最初にテキストをソートすることをお勧めします。それは

abc: ...
abc: ...

隣同士。次に、この正規表現をいくつかのパスで実行します。

Search:
  ^(\w+): (.*)\n\1: 
Replace:
  \1: \2 

Result:
   abc: bla1 bla1 bla1... bla2 bla2 bla2...
   bcd: bla bla bla...
   cde: bla bla bla...
   ghk: bla1 bla1 bla1... bla2 bla2 bla2...
   lmn: bla bla bla...
   xyz: bla bla bla...

順序が重要な場合は、この正規表現を数回実行できます。

Search:
  ^(\w+): (.*)\n((?:(?!\1).*\n)+)\1: (.*\n)
Replace:
  \1: \2 \4\3

Result (1st pass):
  abc: bla1 bla1 bla1... bla2 bla2 bla2...
  cde: bla bla bla...
  ghk: bla1 bla1 bla1...
  lmn: bla bla bla...
  bcd: bla bla bla...
  ghk: bla2 bla2 bla2...
  xyz: bla bla bla...

Result (2nd pass):
  abc: bla1 bla1 bla1... bla2 bla2 bla2...
  cde: bla bla bla...
  ghk: bla1 bla1 bla1... bla2 bla2 bla2...
  lmn: bla bla bla...
  bcd: bla bla bla...
  xyz: bla bla bla...
于 2014-08-11T21:47:29.963 に答える