Chinaunix

标题: sedsed调试出错 [打印本页]

作者: sauer    时间: 2014-12-10 09:55
标题: sedsed调试出错
本帖最后由 sauer 于 2014-12-10 09:58 编辑

sedsed -d -e '/@/{N;/@.*@/{s/@.*@//;P;D}}' file (去掉文件里的注释)
运行这个调试命令出错,显示:sed:文件 /tmp/tmpiMTsXW 行号:28:未匹配的“{”,每次tmp后面的都不一样

file文件内容如下:
John Doe
CEO @Chief Executive Officer@
Jason Smith
IT Manager @Infromation Technology
Officer@
Raj Reddy
Sysadmin @System Administrator@
Anand Ram
Developer @Senior
Programmer@
Jane Miller
Sales Manager @Sales
Manager@
作者: tasteoftime_90    时间: 2014-12-10 10:22
  1. sed -r '/@/{N;/@.+(\n|).+@/{s///;P;D}}'
复制代码
try回复 1# sauer


   
作者: Looiml    时间: 2014-12-10 11:25
本帖最后由 Looiml 于 2014-12-10 13:58 编辑

误解楼主题意。:sleepy:
作者: chengchow    时间: 2014-12-10 13:19
  1. [root@mplifesvr000 ~]# sed -ri '1h;1!H;$!d;${g;s/@[^@]*@//g}' a
  2. [root@mplifesvr000 ~]# cat a
  3. John Doe
  4. CEO
  5. Jason Smith
  6. IT Manager
  7. Raj Reddy
  8. Sysadmin
  9. Anand Ram
  10. Developer
  11. Jane Miller
  12. Sales Manager
复制代码

作者: sauer    时间: 2014-12-10 13:45
本帖最后由 sauer 于 2014-12-10 13:46 编辑

我的意思是问为什么sedsed调试命令会出错的问题,不是为了改进原来的程序。
作者: sauer    时间: 2014-12-10 13:45
我的意思是问为什么调试命令会出错的问题
作者: chengchow    时间: 2014-12-10 16:50
本帖最后由 chengchow 于 2014-12-10 16:51 编辑
sauer 发表于 2014-12-10 13:45
我的意思是问为什么sedsed调试命令会出错的问题,不是为了改进原来的程序。

sed 是行处理命令,不做特殊处理,匹配到\n\r就自动结束打印模式空间,所以你的匹配是有问题的,匹配不到
@.*
.*@这种格式




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2