小编the*_*ode的帖子

如何用另一个文件中的一段文本替换文件中两个标记之间的文本?

假设我有一个文本块~/.bashrc

#~/.bashrc
# ...some commands...

# aliases
alias suicide='sudo rm -rf /'
# end aliases

# other commands
Run Code Online (Sandbox Code Playgroud)

我希望用另一个文件中两个标记之间包含的其他一些文本替换该文本块: 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...
Run Code Online (Sandbox Code Playgroud)

我试过了

 sed -ne 's/# aliases\s+\(.*\)\s+# end aliases/\1/' stuff-to-place-in-bashrc.txt
Run Code Online (Sandbox Code Playgroud)

但我真的在这里的黑暗中摇摆不定。有人可以帮我吗?

  1. 如何从 中提取文本stuff-to-place-in-bashrc.txt

  2. 如何~/.bashrc用问题 1 中提取的文本替换其他部分?

编辑

感谢更新家伙,那些想知道为什么我会想要这样的东西:

允许对脚本文件进行精心挑选的更新,而无需覆盖用户添加的内容。对共享和经常更新的标准操作环境很有用(比如我在Tyro 的最后一份工作是用 XP 编码的)。

去疯狂的家伙。

bash text-processing regular-expression

10
推荐指数
1
解决办法
3094
查看次数

没有包 * 可用。无法通过 yum 安装 git

我正在尝试在我的 Red Hat Enterprise Linux 6.5 服务器上安装 git,但遇到了麻烦。我无法使用 yum 找到 git 的包依赖项。

    [root@FOOBAR mydir]# yum install curl-devel expat-devel gettext-devel \
    >   openssl-devel zlib-devel
    Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
    This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
    Setting up Install Process
    No package curl-devel available.
    No package expat-devel available.
    No package gettext-devel available.
    No package openssl-devel available.
    No package zlib-devel available.
    Error: Nothing to do
Run Code Online (Sandbox Code Playgroud)

在阅读了一些论坛帖子后,我在这里找到了 EPEL 包,并安装了它:

    [root@FOOBAR mydir]# …
Run Code Online (Sandbox Code Playgroud)

bash yum rhel git

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

bash ×2

git ×1

regular-expression ×1

rhel ×1

text-processing ×1

yum ×1