
次の行が複数あります。
##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
あなたが欲しいものは何ですか?