ファイルの2つのタグの間にあるテキストを別のファイルのテキストに置き換える方法は?

ファイルの2つのタグの間にあるテキストを別のファイルのテキストに置き換える方法は?

テキストがあるとしましょう~/.bashrc

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

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

# other commands

このテキストブロックを別のファイルの2つのタグの間に含まれる別のテキストに置き換えたいと思います。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

しかし、私は文字通り暗闇の中で揺れていました。誰でも私を助けることができますか?

  1. それからテキストを抽出する方法はstuff-to-place-in-bashrc.txt

  2. ~/.bashrc質問1で抽出したテキストで他の部分をどのように変更できますか?

編集する

更新していただきありがとうございます。私がなぜこれをしたいのか疑問に思う人のために:

ユーザーが追加したコンテンツを上書きすることなく、スクリプトファイルに対して慎重に選択した更新を許可します。共有され頻繁に更新される標準のオペレーティング環境に役立ちます。初心者XPでコーディング)。

クレイジーな男。

ベストアンサー1

Edは、以前にテストしたようにedスクリプトを開発し、インタラクティブにタスクを実行するために使用できるという点で標準エディタです。小さなファイル(.bashrcコードテキストなど)では、ファイル全体を一度に読み込み、バッファを使用するため、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

同様のスクリプトを使用して、自分のラップトップを含むさまざまな環境に合わせて.asoundrcなどの設定ファイルを自動的に調整します。

edのための最高のドキュメントは非常にクールでシンプルなマニュアルページから来ています。計画9システム。私はそれを次のように翻訳します。ed.psPostScriptファイル。興味があれば計画9あなたはそれを確認する必要があります9本のワイヤーそしてhttp://cat-v.org/もともとBell Labsのバージョンはまだ残っていますが、ファイルシステムは非常にシンプルだからです。

エディタ戦争、emacs、vimなどの最後の言葉:究極のルール!

おすすめ記事