楼主:
donkeychen (Bad_To_The_Bone)
2014-03-24 15:47:05环境 mac osx
使用 sed
filename内容
作者:
LPH66 (-6.2598534e+18f)
2014-03-24 16:55:00基本上这些多余的 \ 都是给 shell 看的, regexp 并没有对 \
作者:
LPH66 (-6.2598534e+18f)
2014-03-24 16:56:00有特殊的处理; 空白前面加 \ 也是为了告诉 shell "这个空白是我的参数的一部份, 不是分隔参数用的"
作者:
LPH66 (-6.2598534e+18f)
2014-03-24 16:57:00regexp 里的 \ 只有在后面跟着一些特殊字符时 (如小括号)才有用, 所以后者其实送给 sed 的是三个 \
作者:
LPH66 (-6.2598534e+18f)
2014-03-24 16:58:00就是为了要把第一个 \ 的这个意义 escape 掉
作者:
LPH66 (-6.2598534e+18f)
2014-03-24 16:59:00(以上是照印象啦, 没时间查说明书有错还请指正)
楼主:
donkeychen (Bad_To_The_Bone)
2014-03-24 17:04:00喔喔 LPH66大的意思是 指令还先被shell拆一层
楼主:
donkeychen (Bad_To_The_Bone)
2014-03-24 17:05:00哎呀我试到都眼花了 一直在那边数 PRINT出来 @.@;
楼主:
donkeychen (Bad_To_The_Bone)
2014-03-24 17:17:00用 sed -i "" 's/\\\\/Oh/g' filename 就简单的取代两
楼主:
donkeychen (Bad_To_The_Bone)
2014-03-24 17:21:00个\ 只是遇到要取代'的就又出现瓶颈><
楼主:
donkeychen (Bad_To_The_Bone)
2014-03-24 17:22:00如果要取代' 我是用 s/"\'"/Oh/g
作者: fjm31714 (float) 2014-03-26 17:40:00
为什么我看不太懂你的 sed 指令 Orz 好多 "
作者: fjm31714 (float) 2014-03-26 17:41:00
字串会先被 shell 拆过没错,用其他语言也是这样
作者: fjm31714 (float) 2014-03-26 17:47:00
我是写像这样@@ sed -i "s/I\\\ am\\\ John/Oh/" file然后你可以印出取代指令 echo "s/I\\\ am\\\ John/Oh/"
作者: fjm31714 (float) 2014-03-26 17:49:00
就知道 regex 长怎样 另外 "" 里的空白原本是不用 escape
作者: fjm31714 (float) 2014-03-26 17:50:00
可是如果这样写 "s/I\\ am\\ John/Oh/" sed 拿到会变
作者: fjm31714 (float) 2014-03-26 17:51:00
"s/I\ am\ John/Oh/" 在 regex 里 \ 用来逃脱东西如果没有这个逃脱他就会找原本那个字符这边就会是空白
作者: fjm31714 (float) 2014-03-26 17:52:00
以上是我的看法,有错请指教 ><