看板 Perl 關於我們 聯絡資訊
※ 引述《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
scwg:cindy 今天上班不認真, 一直po文回答問題 >\\\\\\\\< 06/20 14:38
CindyLinz:中午休息啊... orz 而且, 也只有一篇而已啊 o.o 06/20 18:54
scwg:CSSE 板還一篇 06/21 00:00
clanguage:這..八個斜線 XDDD 感謝大大犧牲午休分享 06/21 00:27
CindyLinz:那不是同一天的啊~~~~~ Q_Q 06/21 00:47
※ 編輯: CindyLinz 來自: 210.242.246.249 (09/10 13:14)