2つの特定のパターンの間にテキストを上書きする方法は?

2つの特定のパターンの間にテキストを上書きする方法は?

次の行が複数あります。

##1##
text
##z##
##2##
text
##z##
...etc

デフォルトでは、##digit##行と##z##の最初の項目の間にテキストをインポートする方法は既にわかっていますが、その間の内容(実際のテキスト)を上書きする方法はわかりません。

上記の例/ファイルのすべての部分を置き換えるのではなく、text私が指定した開始点(##99##など)と終了点(##z##)の間の部分だけを変更しようとしています。

textその部分を上書きしたいテキスト(たとえば、sed 's / oldtext / newtext / g')で置き換えることはできません。その理由は主に次のとおりです。

  • テキストセクションはそのファイルの他の中間セクションの一部であり、特にテキストを変更できますが、2つの特定の行/パターンの間にあるものはそうではありません。

Unix / ネイティブLinuxツールを使用してこれをどのように実行しますか? (dd、sedなど)

ベストアンサー1

file.txtというファイルとその内容が与えられたら

##1##
text
##z##
##2##
text
asdf
more text
##z##
...etc

あなたが望むものが何であるかは明確ではありません。私はそれが次のようだと思います。

注文する

cat file.txt | sed -n '/##2##/!{p;d};p;:cycle n;/##z##/!{H;bcycle};{x;s/.*/my awesome replacement/p;x;p}'

出力を生成します。

##1##
text
##z##
##2##
my awesome replacement
##z##
...etc

あなたが欲しいものは何ですか?

おすすめ記事