パターンが表示されるたびにテキスト行を追加する必要があります。私はこれが必要です:
pattern1
pattern2
こんな感じ
pattern1
pattern2
new line data here
新しい行データは常にモード2以降に表示されます。パターン2は常に同じで、パターン2は100回以上表示されます。 226行と2858行の間にモード2が表示されている場合にのみこれを実行したいと思います。私は内部修正を行い、ファイルの他の何も消去せずにこれをすべてやりたいと思います。 (既にテスト中に一度やってしまいましたが、もう一度やりたくありません)
更新 - パターンに特殊文字が含まれているため、より正確でなければなりません。だから実際にこれを変更しています。
pattern1
pattern2 { text; };
これに関して
pattern1
pattern2 { text; };
new data { text; text; text; };
したがって、特殊文字を含むパターン2が一致し、特殊文字を含む新しいデータ行が追加されます。この事実は事前に明らかにされなければなりませんでした。混乱させて申し訳ありません。
ベストアンサー1
vimでできます!
vim file.txt -c "226,2858g/pattern2/normal onew line data here" -c "wq"
次の方法で対話的にこれを実行することもできます。
vim file.txt
:226,2858g/pattern2/normal onew line data here
:wq
どちらか私私はこれを好むが、vimに慣れていないので、最初のものを好む場合は理解します。
どちらもvimコマンドを呼び出して動作します:global
。
*:g* *:global* *E147* *E148*
:[range]g[lobal]/{pattern}/[cmd]
Execute the Ex command [cmd] (default ":p") on the
lines within [range] where {pattern} matches.
この例では、範囲は226行から2858行、パターンは「pattern2」で、exコマンドは次のようになります。
normal onew line data here
それがすることは、「私が入力するときに次のキーを入力せよ」という意味である「一般」と呼ばれることです。 「o」キー(o)を入力すると、現在の行の下に新しい行が追加され、挿入モードに入ります。その後、挿入モードでは、「New line of data here」というテキストがファイルに挿入されます。
次のコマンドは-c "wq"
(w)riteと(q)uitです。
あなたの「パターン」が正規表現を使用している場合は、おそらく最後まで読む必要があります。この素晴らしいページパターンマッチングが正しいかどうか問題を解決するのに役立ちます。