linux - 如何结束 GNU sed 中的“i”命令?
问题描述
我正在尝试使用sed
对输入字符串进行多次替换和插入。
但是,我最近注意到插入命令i
不会;
像其他命令一样终止,而是打印字符串的其余部分。
$ sed "s/^foo/bar/; 1i foo foo foo; s/foo$/baz/;"
在以下输入上运行该命令时,
foo bar baz
我得到以下不正确的输出。
foo foo foo; s/foo$/baz/;
bar bar baz
终止该命令的正确方法是什么?
解决方案
-e
您可以在单个命令中使用多个单独的查询:
sed -e 's/^foo/bar/' -e '1i foo foo foo' -e 's/foo$/baz/' <<< "foo bar baz"
请参阅在线sed
演示。输出:
foo foo foo
bar bar baz
推荐阅读
- java - 使用 Micrometer 在运行时引发 IncompatibleClassChangeError
- flutter - 使用 GetX 在颤振中返回参数并访问上一页中的结果
- amazon-s3 - 在 Geoserver 和 S3 AWS 之间建立连接时出现问题
- html - 使用css根据宽度逐渐改变div的高度
- git - 无法在 GitHub 上推送代码?收到下面的消息
- javascript - TypeError:未定义不是对象(评估“appState.remove”)
- windows - 使用 Powershell 在 Windows 中卸载 Wan Miniports 的脚本
- java - B2B 客户可以在 Hybris 中匿名吗?
- java - 上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory
- javascript - 子组件可以从父组件接收旧数据进行操作吗?