在 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,6d),第七行由命令插入的新標題替換c。最後,處理在下一個空白行處停止。

如果它給出了預期的輸出,請新增選項-i以直接在檔案上執行替換(GNU sed,適用於 BSD 版本)。

相關內容