Verwenden von sed, um Sonderzeichen zu ersetzen

13

Dies funktioniert ersetzen tommit samin einer Datei:

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

Das tut es aber nicht:

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

Um die Sonderzeichen *****durch das Wort zu ersetzen sam. Ich habe es mit einem Schrägstrich versucht, \*aber Fehler.

Rosenknospe
quelle
2
Mit \*welchem Befehl haben Sie es versucht und welche Fehler haben Sie?
Cuonglm
Ich habe versucht: sed 's / **** / sam / g' test.txt> test2.txt und führt zu Fehler: sed: bad regex '*****': Ungültiger vorangegangener regulärer Ausdruck - dies hat die blackslash \ vor dem *
Rosebud
1
Sie können versuchen, jedem Sonderzeichen zu entkommen:sed 's/\*\*\*\*\*/sam/g'
taliezin

Antworten:

16

Sie müssen die Sonderzeichen mit einem Backslash \vor dem Sonderzeichen schützen, z. B .:

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

Karthik K
quelle
0

Sie müssen die Sonderzeichen mit einem Backslash \vor dem Sonderzeichen schützen. Entkomme in deinem Fall jedem Sonderzeichen mit einem Backslash \.

z.B: **** boy is ****

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

ans:

sam boy is sam
shareef babu
quelle