【问题标题】:sed OSX command not working in Ubuntused OSX 命令在 Ubuntu 中不起作用
【发布时间】:2018-11-24 11:29:10
【问题描述】:

以下命令是为 OSX 编写的,但我不知道如何将其移植到 Ubuntu。

我收到如下所列的错误

错误

sed: -e expression #1, char 74: unterminated 's' command

命令

sed -i '0,/ExecStart=/s//Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=cgroupfs"\n&/' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

【问题讨论】:

  • 在 Ubuntu 16.04 上它不会对我抛出错误。
  • 该错误似乎表明替换命令s/search/replace/ 中缺少/。但是,您的命令看起来很完整并且运行完美。

标签: macos ubuntu sed


【解决方案1】:

我在Ubuntu server 16.04GNU sed 4.2.2 上对其进行了测试,该命令完成了它的目的:在遇到的以ExecStart= 开头的第一行之前,将指定的文本单独插入一行。如果该行包含ExecStart= 但不在开头,则该行将被拆分,并在ExecStart= 之前的行末尾插入指定的文本。

通过示例更好地展示:

$ cat 10-kubeadm.conf
Line001
ExecStart=A
ExecStart=B
Line004
$ sed -i '0,/ExecStart=/s//Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=cgroupfs"\n&/' 10-kubeadm.conf
$ cat 10-kubeadm.conf
Line001
Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=cgroupfs"
ExecStart=A
ExecStart=B
Line004

还有:

$ cat 10-kubeadm.conf
Line001
Line002 ExecStart=A
Line003 ExecStart=B
Line004
$ sed -i '0,/ExecStart=/s//Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=cgroupfs"\n&/' 10-kubeadm.conf
$ cat 10-kubeadm.conf
Line001
Line002 Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=cgroupfs"
ExecStart=A
Line003 ExecStart=B
Line004

【讨论】:

  • 上一个命令sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab 是否可能会影响这个?我正在运行带有便当 ubuntu 16.04 服务器映像的 vagrant 机器。 . . gist.github.com/lizrice/69d3b28979391287176b3b7155a327b9
  • @AranFreel 它不应该:这个命令看起来很好,除了你的/etc/fstab之外不会影响任何东西。请分别运行每个命令,以便找到问题的根源。
猜你喜欢
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 2014-08-03
  • 2014-08-03
  • 1970-01-01
相关资源
最近更新 更多