LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 737|回复: 5

在shell脚本中调用sed遇到的问题

[复制链接]
发表于 2003-9-5 10:12:16 | 显示全部楼层 |阅读模式
脚本如下:

#!/bin/sh

export LINE='10';
sed -n '$LINE,$p' log > log.tmp

就是想将从$LINE到最后一行输出到一个文件,但是运行时报错,然后改成

sed -n "$LINE,$p" log > log.tmp
也报错,请问如何能实现呢?

谢谢! :help
发表于 2003-9-5 14:23:16 | 显示全部楼层
把$line换成${line}
sed -n "${line},$p"
类似的贴子以前有讨论,你查查看 ;)
 楼主| 发表于 2003-9-7 09:58:33 | 显示全部楼层
谢谢javalee斑竹回复,可是试过以后还是不行呀!
脚本:
#!/bin/sh
export LINE='10';
sed -n "${LINE},$p" datafile
运行错误如下:
test[526]$ ./test.sh
sed: -e expression #1, char 3: Unexpected ','
test[527]$
发表于 2003-9-7 11:15:18 | 显示全部楼层
那是因为对(,)逗号和后面的$号无法解释,这样
sed -n "${LINE},\$p" datafile
就没问题啦~~
 楼主| 发表于 2003-9-7 20:48:58 | 显示全部楼层
^_^,谢谢斑竹!成功。
另外经过测试,如果两个都是变量就得这么写:
#!/bin/sh
export line1='10';
export line2='20';
sed -n "${line1},${line2}p" datafile
发表于 2003-9-7 21:27:54 | 显示全部楼层
最初由 axl_chan 发表
^_^,谢谢斑竹!成功。
另外经过测试,如果两个都是变量就得这么写:
#!/bin/sh
export line1='10';
export line2='20';
sed -n "${line1},${line2}p" datafile

对!但是那个$(结尾行符号)必须用\来转义,
这样也可以,sed -n ${line1},\$p datefile
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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