免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1965 | 回复: 10
打印 上一主题 下一主题

sed 处理出错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-19 22:21 |只看该作者 |倒序浏览
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 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-12-19 22:47 |只看该作者
  1. sed   "`expr $(cat temp | wc -l) - 1`,\$d"  ./temp
复制代码


用双引号的话$需要转义......

论坛徽章:
0
3 [报告]
发表于 2009-12-19 22:57 |只看该作者
sed   "`expr $(cat temp | wc -l) - 1`,\$d"  ./temp


里面我用了反单引号,

请问我该怎样去转义??谢谢

论坛徽章:
0
4 [报告]
发表于 2009-12-19 22:59 |只看该作者
啊? - - 上面那个我已经改过了啊,$前面加一个\ 就可以了,我这里测试没问题

因为你表达式外面用的是双引号嘛,里面的$d也会被当作变量来替换..所以要把$转义掉

论坛徽章:
0
5 [报告]
发表于 2009-12-19 23:06 |只看该作者
哦。不好意思。

我不仔细。

呵呵。

谢谢。

论坛徽章:
0
6 [报告]
发表于 2009-12-19 23:08 |只看该作者
我没有看不仔细。

我理解成第一个$符了。

论坛徽章:
0
7 [报告]
发表于 2009-12-19 23:19 |只看该作者
这LZ好可耐,啵一下

论坛徽章:
0
8 [报告]
发表于 2009-12-20 12:15 |只看该作者


呵呵。真不懂。就要问。呵呵

sed "$d" temp

怎么不报错?

谢谢

论坛徽章:
0
9 [报告]
发表于 2009-12-20 23:47 |只看该作者
其实很简单,先看个例子,


  1. 23:42:03 >d='s/apple/boy/g'
  2. 23:42:07 >echo apple >file
  3. 23:42:10 >cat file
  4. apple
  5. 23:42:11 >sed "$d" file
  6. boy
  7. 23:42:17 >

复制代码


双引号只转义部分元字符..$d被shell当作变量替换了

推荐看下"shell历险之——引用的迷途"

论坛徽章:
0
10 [报告]
发表于 2009-12-21 13:22 |只看该作者
谢谢.明白了.

sed '3,$d' temp
sed "3,\$d" temp

执行结果都是一样的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP