gpt4 book ai didi

bash - ed HERELINE 替换模式失败

转载 作者:行者123 更新时间:2023-11-29 09:45:50 27 4
gpt4 key购买 nike

假设您要对所有包含模式的文件进行编辑。例如,将所有“2017”更改为“2018”。存在许多针对 perl、sed 和各种其他的建议。如果 ed 编辑器可以工作的话,它会简单得多。

给定一个文件:

$ echo 2017 > fubar

为什么这不起作用

$ ed fubar <<< ',s/2017/2018/g\nw\n'
6
?
$ cat fubar
2017
$

当这样做时

$ printf ',s/2017/2018/g\nw\n'|ed fubar
6
7
$ cat fubar
2018
$

最后会这样循环使用

$ for i in `grep -r -l 2018`; do ed $i <<< ',s/2017/2018/g\nw\n'; done

最佳答案

printf\n 转义序列转换为换行符。在 shell 中的普通字符串中没有这样的翻译,ed 本身也无法识别它,因此无法理解并且会出现错误。

您可以使用 bash $'...' 字符串来执行转义序列转换。

ed fubar <<< $',s/2017/2018/g\nw\nq\n'

我还在末尾添加了一个明确的 q 命令。在我的 Mac OS 系统上,如果 ed 读取 EOF,我会收到 ? 警告。

您还可以使用此处文档:

ed fubar <<EOF
,s/2017/2018/g
w
q
EOF

关于bash - ed HERELINE 替换模式失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48328431/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com