Re: [問題] 在 shell/shell script 下做斜線取代

看板Perl作者 (Cindy Wang)時間14年前 (2011/06/20 13:23), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《clanguage (C語言)》之銘言: : 想問一下如何在 shell/shell script 下使用反斜線取代? : 試著處理反斜線的取代,但是失敗了 : 在 test.sh 中使用 perl: : 1. 只取代一個英文 word -> ok : #!/bin/bash : string="pre-string\\middle\\post-string"; : echo $string; : string2=`echo $string | perl -pe s/middle/in_the_middle/;`; : echo "string2 = $string2"; : 輸出 : pre-string\middle\post-string : string2 = pre-string\in_the_middle\post-string : 2. 試著取代反斜線 : #!/bin/bash : string="pre-string\\middle\\post-string"; : echo $string; : string2=`echo $string | perl -pe "s/\\middle\\/in_the_middle/;"`; : echo "string2 = $string2"; : 輸出: : pre-string\middle\post-string : Substitution replacement not terminated at -e line 1. : string2 = : 請問應該怎麼使用? 謝謝 反斜線 \ 是 shell ` 的脫序字元, 也是 shell " 的脫序字元, 也是 perl regex 的脫序字元.. 所以你一次要用 2**3 一共 8 個反斜線.... ╮( ̄﹏ ̄)╭ #!/bin/bash string="pre-string\\middle\\post-string"; echo $string; string2=`echo $string | perl -pe "s/\\\\\\\\middle\\\\\\\\/in_the_middle/;"`; echo "string2 = $string2"; 如果你把 " 換成 ' 的話, 可以少一組, 那就是 4 個反斜線... #!/bin/bash string="pre-string\\middle\\post-string"; echo $string; string2=`echo $string | perl -pe 's/\\\\middle\\\\/in_the_middle/;'`; echo "string2 = $string2"; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.242.246.249

06/20 14:38, , 1F
cindy 今天上班不認真, 一直po文回答問題 >\\\\\\\\<
06/20 14:38, 1F

06/20 18:54, , 2F
中午休息啊... orz 而且, 也只有一篇而已啊 o.o
06/20 18:54, 2F

06/21 00:00, , 3F
CSSE 板還一篇
06/21 00:00, 3F

06/21 00:27, , 4F
這..八個斜線 XDDD 感謝大大犧牲午休分享
06/21 00:27, 4F

06/21 00:47, , 5F
那不是同一天的啊~~~~~ Q_Q
06/21 00:47, 5F
※ 編輯: CindyLinz 來自: 210.242.246.249 (09/10 13:14)
文章代碼(AID): #1D_jbKEQ (Perl)
文章代碼(AID): #1D_jbKEQ (Perl)