我已按照这篇文章中的说明如何在文件中的某个字符串之后插入文本?
但我怀疑这些说明对 OSX 无效。
我想使用 Bash 在源文件中添加一些文本
sed '/pattern/a some text here' ${sourceFile}
但是当我运行命令时,我得到
“/pattern/a some text here”:命令 a 需要 \ 后跟文本
编辑
我创建了一个infile
用单行调用的新文件
pattern
和一个 bash 脚本
#!/bin/bash
sed '/pattern/a\
text to insert' infile
运行脚本将“模式”回显到控制台但不插入文本
编辑
我也尝试过 bash 脚本
#!/bin/bash
sed '/pattern/a\
add one line\
\\and one more' infile
和终端回声
pattern
add one line
\and one more
但 infile 仍然有单行
pattern
我不确定 OSX 是否有
ed
(找到一个肯定的提示),所以这是另一种选择:这会将以下命令发送到
ed
:/pattern/
-- 搜索“模式”a
-- 在该行之后附加以下文本text to insert
- 文本.
-- 插入文本的结尾w
-- 将更新后的文件写入磁盘q
-- 退出编辑>/dev/null
重定向是为了ed
使匹配pattern
行的报告静音。我在
ed
命令前加了一个 quiet前缀,grep
以确保在要求ed
搜索之前文件中存在“模式”——否则,当模式搜索失败时,你会感到?
困惑ed
。-i
您忘记使用sed
. 因为 sed 是一个stream editor
所以不会对输入做任何改变。您需要明确努力将输出文件移回输入或使用 -i 选项(如果可用):