作者CindyLinz (Cindy Wang)
看板Perl
标题Re: [问题] 在 shell/shell script 下做斜线取代
时间Mon Jun 20 13:23:30 2011
※ 引述《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
1F:推 scwg:cindy 今天上班不认真, 一直po文回答问题 >\\\\\\\\< 06/20 14:38
2F:→ CindyLinz:中午休息啊... orz 而且, 也只有一篇而已啊 o.o 06/20 18:54
3F:→ scwg:CSSE 板还一篇 06/21 00:00
4F:推 clanguage:这..八个斜线 XDDD 感谢大大牺牲午休分享 06/21 00:27
5F:→ CindyLinz:那不是同一天的啊~~~~~ Q_Q 06/21 00:47
※ 编辑: CindyLinz 来自: 210.242.246.249 (09/10 13:14)