作者:
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
以上是我的看法,有錯請指教 ><