
我需要編寫一個腳本來用其他部分替換文件的一部分。我正在處理數百個文件。
我有一個要添加到一堆文字檔案中的命令清單。但在文件中,我在開頭有一個通用命令。
我只想用我的命令列表替換命令列表。下面給出了更多資訊。
原始文件
%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,6d
),第七行由命令插入的新標題替換c
。最後,處理在下一個空白行處停止。
如果它給出了預期的輸出,請新增選項-i
以直接在檔案上執行替換(GNU sed
,適用於 BSD 版本)。