Chinaunix
标题:
sed 处理出错
[打印本页]
作者:
mfkwwgi
时间:
2009-12-19 22:21
标题:
sed 处理出错
sed "`expr $(cat temp | wc -l) - 1`,$d" ./temp(目的:用sed删除temp的行数减1 的所有行
提示:sed: -e expression #1, char 2: unexpected `,'
怎么回事呢?
谢谢
[
本帖最后由 mfkwwgi 于 2009-12-19 22:23 编辑
]
作者:
Celinde
时间:
2009-12-19 22:47
sed "`expr $(cat temp | wc -l) - 1`,\$d" ./temp
复制代码
用双引号的话$需要转义......
作者:
mfkwwgi
时间:
2009-12-19 22:57
sed "`expr $(cat temp | wc -l) - 1`,\$d" ./temp
里面我用了反单引号,
请问我该怎样去转义??谢谢
作者:
Celinde
时间:
2009-12-19 22:59
啊? - - 上面那个我已经改过了啊,$前面加一个\ 就可以了,我这里测试没问题
因为你表达式外面用的是双引号嘛,里面的$d也会被当作变量来替换..所以要把$转义掉
作者:
mfkwwgi
时间:
2009-12-19 23:06
哦。不好意思。
我不仔细。
呵呵。
谢谢。
作者:
mfkwwgi
时间:
2009-12-19 23:08
我没有看不仔细。
我理解成第一个$符了。
作者:
Celinde
时间:
2009-12-19 23:19
这LZ好可耐,啵一下
作者:
mfkwwgi
时间:
2009-12-20 12:15
呵呵。真不懂。就要问。呵呵
sed "$d" temp
怎么不报错?
谢谢
作者:
Celinde
时间:
2009-12-20 23:47
其实很简单,先看个例子,
23:42:03 >d='s/apple/boy/g'
23:42:07 >echo apple >file
23:42:10 >cat file
apple
23:42:11 >sed "$d" file
boy
23:42:17 >
复制代码
双引号只转义部分元字符..$d被shell当作变量替换了
推荐看下"shell历险之——引用的迷途"
作者:
mfkwwgi
时间:
2009-12-21 13:22
谢谢.明白了.
sed '3,$d' temp
sed "3,\$d" temp
执行结果都是一样的.
作者:
kns1024wh
时间:
2009-12-22 22:25
标题:
回复 #1 mfkwwgi 的帖子
转移字符要区分开
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2