在Linux上我使用它来获取[test]
行之后的下两行:
sed -n '/\[test\]/{n;p;n;p}' my-file
在Mac上我得到:
sed: 1: "/\\[test\\]/{n;p;n;p}": extra characters at the end of p command.
是否有适用于两个平台或Mac的表达式,必须使用完全不同的命令?
答案 0 :(得分:7)
在最后p
sed -n '/\[test\]/{n;p;n;p;}' my-file
(与Mac版本无关,在MSYS上也失败)
答案 1 :(得分:3)
OSX(BSD)sed需要;
或单独一行终止每个命令。
所以这应该有效:
sed -n '/\[test\]/{n;p;n;p;}' my-file
甚至这个都可行:
sed -n '/\[test\]/{
n
p
n
p
}' my-file
答案 2 :(得分:1)
另外,如果在使用-i
选项且不带扩展名时碰巧遇到此错误:
> sed -i 's/foo/bar/g' file
sed: 1: "file": extra characters at the end of p command
在这种情况下,解决方案是将扩展名显式设置为空字符串:
> sed -i '' 's/foo/bar/g' file