曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3077|回复: 0
打印 上一主题 下一主题

替换反斜杠

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2013-11-20 23:07:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有如下文本:
$ cat tmp.txt
\hello


在命令行中直接去掉开头处的反斜杠:
$ sed 's/^\\//' tmp.txt
hello

去掉是成功的。如果将同样的语句放在脚本中呢?

[Bash shell] 纯文本查看 复制代码
#!/bin/sh

tmp=`cat tmp.txt | sed 's/^\\//' `

echo $tmp


运行输出:
$ sh and.sh
sed: -e expression #1, char 6: unterminated `s' command


错误!

解决方法有几种:

1. 将语句 sed 's/^\\//'  改为 sed 's/^\\\//' ,即使用了 3 条反斜杠。这里我们可以认为,两条反斜杠实际只等同于一条反斜杠,这样的话,该条反斜杠就会将第 2 条界定符(/) 转义成普通的斜杠符号,造成 sed 只剩下两条斜杠界定符,因此会提示没有闭合的错误。


2. 不使用 ` 符号,而用 $() 来代替:tmp=$(cat tmp.txt | sed 's/^\\//') 。推荐使用这种方法。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-15 21:17 , Processed in 0.060082 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表