
ファイルの一部を他のファイルに置き換えるスクリプトを作成する必要があります。数百のファイルを処理しています。
多数のテキスト ファイルに追加するコマンドのリストがあります。ただし、ファイルの先頭には共通のコマンドがあります。
私は単にコマンドのリストを自分のコマンドのリストに置き換えたいだけです。詳細は以下を参照してください。
オリジナルファイル
%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
行ごとに置き換えるのではなく、最初の 6 行が削除され ( 1,6d
)、7 行目が コマンドで挿入された新しいヘッダーに置き換えられますc
。最後に、次の空行で処理が停止します。
期待どおりの出力が得られた場合は、-i
ファイル上で直接置換を実行するオプションを追加します (GNU sed
、BSD バージョンに適合)。