2017-06-13 1 views
0

Ich verbrachte bereits 3 Stunden meiner Zeit versucht, dies zu lösen, aber ich bin nicht Linux-Tech, aber das ist so nervig.sed Wörter mit mehreren Anführungszeichen

Ich brauche test.txt

"cPHulk":{"BruteForce":3,"Login":3,"*":3} 

ein Stück Text in einer Datei zu finden und es für ändern:

"cPHulk":{"BruteForce":1,"Login":1,"*":1} 

Könnten Sie mir bitte helfen und mir sagen würde, wie die richtige sed Befehl sieht wie aus.

Vielen Dank für Ihre Hilfe

EDIT: Ich habe versucht, dies:

sed -e "s/\"cPHulk\":{\"BruteForce\":3,\"Login\":3,\"*\":3}/\"cPHulk\":{\"BruteForce\":1,\"Login\":1,\"*\":1}" /root/test.txt 

Aber leider erhalte ich Fehler:

sed: -e expression #1, char 45: unterminated `s' command 
+1

fügen Sie mindestens einen der Befehle, die Sie in Frage gestellt haben ... die '*' in der Suchzeichenfolge muss maskiert werden ... verwenden '\ *' – Sundeep

+0

Aktualisiert mit, was ich versuchte – LukeJ

+0

ist es JSON-Datei? Wenn ja, können Sie es posten? – RomanPerekhrest

Antwort

1
$ cat ip.txt 
foo 
"cPHulk":{"BruteForce":3,"Login":3,"*":3} 
bar 

$ sed 's/"cPHulk":{"BruteForce":3,"Login":3,"\*":3}/"cPHulk":{"BruteForce":1,"Login":1,"*":1}/' ip.txt 
foo 
"cPHulk":{"BruteForce":1,"Login":1,"*":1} 
bar 

Benutzen Sie, Nur * muss maskiert werden. Siehe Overview of basic regular expression syntax

Verwandte Themen