ファイルの一部を別の部分に置き換えるスクリプトを作成する必要があります。私は何百ものファイルを扱っています。
複数のテキストファイルに追加したいコマンドのリストがあります。しかし、ファイルの先頭には一般的なコマンドがあります。
コマンドリストを私のコマンドリストに置き換えたいです。詳細は以下に示す。
オリジナルファイル
%apj=E:\Work\Informatin\Regarding work\DND.apj
%mem=4GB
%nprocshared=2
#p oyu opsd qtnv/1-a(x) kglgg=uioewr
Application
0 1
X -3.66480600 0.10278400 -0.00655500
Y -4.11487100 1.45621700 -0.05226200
Z -5.10300200 1.90042600 0.83864800
1 2 1.0 13 1.0 23 1.0
2 3 1.5 4 1.5
3 5 1.5 6 1.0
4 7 1.5 8 1.0
交換したいキャラクター
%apj=D:\Store\Data\Diff All\SMC.apj
%mem=800MB
%nprocshared=4
#p udf AMER hbvn/3-b(n) huggh=whea
Use
0 1
X -3.66480600 0.10278400 -0.00655500
Y -4.11487100 1.45621700 -0.05226200
Z -5.10300200 1.90042600 0.83864800
私のコマンドのリストに置き換えた後、空白行の後ろにある文字、つまり次の行を削除して空白を維持したいと思います。
1 2 1.0 13 1.0 23 1.0
2 3 1.5 4 1.5
3 5 1.5 6 1.0
4 7 1.5 8 1.0
答え1
私はこれがあなたに必要なものだと思います:
sed '1,6d
7c%apj=D:\Store\Data\Diff All\SMC.apj\
%mem=800MB\
%nprocshared=4\
#p udf AMER hbvn/3-b(n) huggh=whea\
\
Use\
/^$/q' filename
1行ずつ置き換える代わりに、最初の6行(1,6d
)が削除され、7行目はコマンドで挿入された新しいヘッダーに置き換えられますc
。最後に、次の空行で処理を停止します。
予想される出力が表示されたら、-i
ファイルから直接置換を実行するオプションを追加します(sed
BSDバージョンの場合はGNU)。