我试图使用sed在文件中找到匹配的模式,然后只删除下一行.
防爆.
位置
纽约<----删除
美国
位置
伦敦<----删除
英国
我sed '/Location/{n; d}'在linux上尝试过这项工作但是没有在solaris上工作.
谢谢.
正如我在关于你的另一个sed问题的答案中提到的那样,Solaris sed是老式的,需要更多的手持(或换句话说),对它的语法更加挑剔.
你需要的只是一个额外的';' char放在`d'char之后,即
sed '/Location/{n; d;}'
Run Code Online (Sandbox Code Playgroud)
更一般地说,任何可以在新行内部的{...}东西在卷起到一行时需要一个分号分隔符.但是,您无法像在Linux中那样将'a','i','c'命令汇总到一行.
在Solaris标准sed中,'a',i','c'命令需要一个后面带有NO空格或制表符的尾随'\',在\n终止的行上有你想要的数据(可能在某个K限制内)(NO \rs) ),然后是一个空行.
也可能已/usr/xpg4/bin/sed安装较新的Solaris 安装.尝试
/usr/xpg4/bin/sed '/Location/{n; d}'
Run Code Online (Sandbox Code Playgroud)
如果你很幸运,它将支持你的快捷语法.我再也无法使用任何solaris机器进行测试了.
最后,如果这不起作用,那么可以安装一些GNU工具包,这些工具将sed更像你从Linux习惯的工具.询问您的系统管理员是否已经存在GNU工具,或者是否可以安装它们.我不确定哪个版本的gnu sed开始支持'宽松'语法,所以不要以为它会在没有测试的情况下修复:-)
我希望这有帮助.
PS欢迎来到StackOverflow,让我提醒您我们通常在这里做的三件事:1)当您收到帮助时,请尝试给予它,回答您在专业领域的问题2)阅读常见问题解答,http://tinyurl.com/2vycnvr,3)当你看到好的问答时,请使用灰色三角形http://i.imgur.com/kygEP.png投票 ,因为系统的可信度是基于用户通过共享获得的声誉他们的知识.还记得通过按下复选标记http://i.imgur.com/uqJeW.png来接受更好地解决问题的答案(如果有的话)