構文を使用してファイル内の特定の行(たとえば、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/O
ex
EOF
for loop
Matlab
ex
vim
ここMatlabスクリプトです。
答え1
test_file
「hello world」(「ここではドキュメント」を意味するようです)というファイルの5行目を構造変更して使用するには、次のようにします。ex
EOEX
ex test_file << EOEX
5c
hello world
.
wq
EOEX
上記のコマンドも機能しますed
が、POSIXed
ではサポートされていませんwq
。代わりに、w
とをq
別の行に入力してください。
使いやすくなりますsed
(このオプションをサポートするバージョン)。-i
sed -i '15 c hello world' test_file