假设我在中有一段文字~/.bashrc
:
#~/.bashrc
# ...some commands...
# aliases
alias suicide='sudo rm -rf /'
# end aliases
# other commands
我希望将该文本块替换为另一个文件中两个标记之间包含的一些其他文本: stuff-to-place-in-bashrc.txt
# stuff-to-place-in-bashrc.txt
# ...stuff...
# aliases
alias ldir='ls * -d'
alias ithinklifeisworthliving='echo all good'
# end aliases
# ...more stuff...
我试过了
sed -ne 's/# aliases\s+\(.*\)\s+# end aliases/\1/' stuff-to-place-in-bashrc.txt
但是我真的在黑暗中摇摆。有人可以帮我吗?
如何从中提取文本stuff-to-place-in-bashrc.txt
?
如何~/.bashrc
用问题1中的提取文本替换另一部分?
感谢您的更新,那些想知道为什么我想要这样的人:
允许对脚本文件进行精心挑选的更新,而不会覆盖用户添加的内容。对于共享和经常更新的标准操作环境很有用(例如我在Tyro的上一份用XP编码的工作)。
去疯狂的家伙。
Ed是标准编辑器,因为您可以使用它来开发ed脚本并让它像以前测试过的那样以交互方式完成其工作。对于像这样的小文件.bashrc
或任何代码文本,ed是有效的,因为ed可以一口气读取整个文件并与缓冲区一起使用。出于同样的原因,您不应将ed用于日志文件之类的大文件。
但是使用ed脚本,您的工作很快就完成了:
ed ~/.bashrc<<EOF
/^# aliases
+,/^# end aliases/-1d
-r !sed -n '/^# aliases/,/^# end aliases/p' stuff-to-place-in-bashrc.txt|grep -v '^#'
w
q
EOF
我使用类似的脚本来自动调整配置文件,例如ALS .asoundrc,以适应我将笔记本电脑带到的不同环境。
关于ed的最佳文档来自非常酷的PLAN9系统的简单手册页。我将其翻译为ed.ps附言文件。如果您对PLAN9感兴趣,则应检查9front和http://cat-v.org/,因为原始的bell labs版本仍然保留,但文件系统非常简单。
关于编辑器战争,emacs,vim等的最终结论:acme规则!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句