2012-05-15 37 views
7

純粋に学問的ですが、それは私をイライラさせます。 sedを使用してsedを含む行の重複単語を削除します

there there are are multiple lexical errors in this line line 

私はこの文章を修正したいと思います。私はこれを遠くに持っています:

sed 's/\([a-z][a-z]*[ ,\n][ ,\n]*\)\1/\1/g' < file.text 

最後の2倍の単語を除くすべてを修正します!

there are multiple lexical errors in this line line 

sed guruさんが最後の言葉を扱っていない理由を説明してください。

+0

N.B. RE - '[、\ n]' sedは '\ n'を行区切り文字として使います。だから、 '\ n'をパターンスペースに挿入しない限り、パターンスペースにラインを読み込んだ後に決してそれらに遭遇することはありません。 – potong

答えて

10

これは、最後のケース(line)の正規表現メモリ1にはline(行の後に空白がある)があり、その繰り返しを探しているからです。最後のlineの後にスペースがないので、マッチは失敗します。

これを修正するには、末尾の単語の後に空白を追加します。line

代わりにあなたが正規表現を変更することができます。

sed -e 's/\b\([a-z]\+\)[ ,\n]\1/\1/g' 

See it

関連する問題