7

純粋に学術的ですが、それは私をイライラさせます。

このテキストを修正したい:

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 の第一人者は、上記が最後の単語を扱わない理由を説明できますか?

4

1 に答える 1

10

これは、最後のケース ( line) では、正規表現メモリ 1 にline(行の後にスペースが続く) があり、その繰り返しを検索しているためです。最後の後にスペースがないためline、一致は失敗します。

これを修正するには、末尾の単語の後にスペースを追加しますline

または、正規表現を次のように変更できます。

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

見る

于 2012-05-15T11:58:12.773 に答える