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.


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.