2017-06-13 43 views
0

我花了3个小时的时间试图解决这个问题,但我不是Linux技术,但是这非常烦人。带几个引号的sed单词

我需要找到在文件中的一段文字test.txt的

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

并改变它:

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

你能帮我,告诉我怎么会有正确的SED命令看起来像。

您的帮助非常感谢

编辑:我已经试过这样:

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

但不幸的是我发现了错误:

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

添加至少一个您试图提问的命令...搜索字符串中的'*'必须被转义...使用'\ *' – Sundeep

+0

更新了我试过的 – LukeJ

+0

它是json文件吗?如果是这样,你可以发布它吗? – RomanPerekhrest

回答

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 

使用单引号,只有*需要逃脱。请参阅Overview of basic regular expression syntax