sed ファイル比較 [重複]

sed ファイル比較 [重複]

OSXでは、次のコマンドはパターンを削除し、単語全体に影響します。

sed -e "$(sed 's:.*:s/&//g:' /path/to/wordsToRemove.txt)” /path/to/sourceFile.txt > outFile.txt

wordsToRemove.txt含む:

it
for

sourceFile.txt含む:

it was green forever for candy

outFile.txt含む:

was green ever candy

「for」という単語を「forever」の一部ではなく単語自体に一致させたかったのですが、「forever」という単語が一致して「ever」に変更されました。

この状況を避けることはできますか?

ベストアンサー1

あなたは一致することができます単語の境界sedは正規表現に特殊タグを使用してこれを行います\<\>

たとえば、

 $sed -e 's/\<for\>//g' < sourceFile.txt 
 it was green forever  candy

この正規表現は、「for」を永遠の一部ではなく完全な単語にのみ一致させます。

したがって、元のオネライナーを次のように変更できます。

sed -e "$(sed 's:.*:s/\\<&\\>//g:' /path/to/wordsToRemove.txt)” /path/to/sourceFile.txt > outFile.txt

\<およびエスケープ処理に注意してください\>

おすすめ記事