Re: [問題] 在 shell/shell script 下做斜線取代
※ 引述《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
06/20 14:38, 1F
→
06/20 18:54, , 2F
06/20 18:54, 2F
→
06/21 00:00, , 3F
06/21 00:00, 3F
推
06/21 00:27, , 4F
06/21 00:27, 4F
→
06/21 00:47, , 5F
06/21 00:47, 5F
※ 編輯: CindyLinz 來自: 210.242.246.249 (09/10 13:14)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章