multipls ファイルの先頭にコマンドセットを追加する

multipls ファイルの先頭にコマンドセットを追加する

ファイルの一部を別の部分に置き換えるスクリプトを作成する必要があります。私は何百ものファイルを扱っています。

複数のテキストファイルに追加したいコマンドのリストがあります。しかし、ファイルの先頭には一般的なコマンドがあります。

コマンドリストを私のコマンドリストに置き換えたいです。詳細は以下に示す。

オリジナルファイル

%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ファイルから直接置換を実行するオプションを追加します(sedBSDバージョンの場合はGNU)。

おすすめ記事