在 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 版本)。

相关内容