VIMまたはEXのbashスクリプトを介してファイルの特定の行を置き換えることはできますか?

VIMまたはEXのbashスクリプトを介してファイルの特定の行を置き換えることはできますか?

構文を使用してファイル内の特定の行(たとえば、5行目)を変更したいと思います。EOEXどうすれば目標を達成できますか?私の目的を達成するために使用するコードスニペットは次のとおりです。

#!/bin/bash
S=0.030
F=0.150
N=30
DIFF=`echo "scale=3; $F - $S" | bc -l`
dw=`echo "scale=3; $DIFF / $N" | bc -l`
is=`echo "scale=3; $S / $dw" | bc -l`
if=`echo "scale=3; $F / $dw" | bc -l`
ex ~/Desktop/Dropbox/MATLAB/FFT.m  <<EOEX
  :5s/for*/for i = $S:$dw:$F/g
  :x
EOEX

私はいくつかの調査の結果EOF(ファイルの終わり)が特定のコマンドの標準入力にリダイレクトするためにhere scripts 一般的に使用されることを発見しました(私の場合)。また、開いているキーワードと閉じるキーワードが同じであれば、どの単語でも代わりに使用できることも学びました。私の問題は、望ましい効果を得ること(つまり、このスクリプトで行を別の初期化プログラムに置き換えること)に加えて、行を削除せずに5行目の末尾に文字列を追加することです。ちなみにFFT.mファイルも追加しました。以前の質問の抽象的性質のため、ご迷惑をおかけしたことをお詫び申し上げます。目的の効果を得るために他のプログラムを使用する意向もありますが、なぜorで動作しないのか疑問に思います。クリックしてくださいI/OexEOFfor loopMatlabexvimここMatlabスクリプトです。

答え1

test_file「hello world」(「ここではドキュメント」を意味するようです)というファイルの5行目を構造変更して使用するには、次のようにします。exEOEX

ex test_file << EOEX
5c
hello world
.
wq
EOEX

上記のコマンドも機能しますedが、POSIXedではサポートされていませんwq。代わりに、wとをq別の行に入力してください。

使いやすくなりますsed(このオプションをサポートするバージョン)。-i

sed -i '15 c hello world' test_file

関連情報