sedを使用して特殊文字を置き換える


13

これは交換する働きtomsamファイルに:

sed 's/tom/sam/g' file_1 > file_2

しかし、これはそうではありません:

sed 's/*****/sam/g' file_1 > file_2

特殊文字*****を単語に置き換えsamます。私はスラッシュで試しました\*が、エラーが発生しました。


2
どのコマンドで試しました\*か、どのエラーが表示されましたか?
クオンルム

私は試しました:sed 's / **** / sam / g' test.txt> test2.txtおよび結果:error:sed:bad regex '*****':無効な先行正規表現-これには*の前のブラックスラッシュ
Rosebud

1
すべての特殊文字をエスケープしようとすることがありますsed 's/\*\*\*\*\*/sam/g'
。–タリエジン

回答:


16

特殊文字の\前にバックスラッシュを付けて特殊文字をエスケープする必要があります。例:

sed 's/\*/t/g' test.txt > test2.txt


0

特殊文字の\前にバックスラッシュを付けて、特殊文字をエスケープする必要があります。あなたの場合、すべての特殊文字をバックスラッシュでエスケープします\

例えば: **** boy is ****

sed 's/\*\*\*\*/sam/g' filename

ans:

sam boy is sam
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.