Unix sed为什么要报告;无效的命令代码";为了瓦德?

Unix sed为什么要报告;无效的命令代码";为了瓦德?,unix,sed,Unix,Sed,我正在运行以下sed命令。我想从第二行开始提取第四行: input: $ sed -n '2~4p' filename output: sed: 1: "2~4p": invalid command code ~ 有人知道为什么会这样吗?我正在使用MacOSX10.8 我知道下面的awk命令可以:$awk“NR%4==2{print}” 我很好奇为什么tilde对于这个sed命令无效 sed -n '1d;N;N;N;P;d' YourFile 一班轮 通过1行(删

我正在运行以下sed命令。我想从第二行开始提取第四行:

input:
$ sed -n '2~4p' filename

output:
sed: 1: "2~4p": invalid command code ~
有人知道为什么会这样吗?我正在使用MacOSX10.8

我知道下面的awk命令可以:$awk“NR%4==2{print}”

我很好奇为什么tilde对于这个sed命令无效

 sed -n '1d;N;N;N;P;d' YourFile
一班轮

  • 通过1行(删除也意味着直接转到脚本末尾)
  • 负载比电流大3线
  • 打印第1行
  • 删除加载的行
  • 重新启动操作

我猜您是在Mac OS X中。它有
sed
的BSD实现,如果您在
man
页面中搜索
~
,您将什么也找不到,因为它不在那里

您可以安装GNU实现,例如使用MacPorts:

sudo port install gsed
或Brew:

brew install gnu-sed

MacOSX不运行支持~的gnu sed。只需从源代码处编译即可在Mac上安装gnu sed,无需自制或MacPorts。您可以将
awk
缩短为:
awk'NR%4==2'文件