【发布时间】:2020-03-09 04:57:24
【问题描述】:
我有一个包含两个重复字符串的文件,这是我要识别的标记。标记是“(CO)VARIANCES”,每个主题都遵循 3 条不同的线。我想删除第一个字符串之后的 3 行并将其替换为另一个文件的内容。文件结构如下:
cat file1.txt
Something1
Something2
Something3
(CO)VARIANCES
44.572 0.28723E-01 0.0000
0.28723E-01 0.64501E-03 0.0000
0.0000 0.0000 0.0000
Something4
Something5
Something6
(CO)VARIANCES
34.891 0.38642E-01 1.7538
0.38642E-01 0.17122E-02 0.54735E-02
1.7538 0.54735E-02 0.23285
我想删除(CO)VARIANCES 之后的三行并将其替换为另一个包含某些内容的文件。命令
sed -e '/(CO)VARIANCES/{n;N;N;d}' file1.txt
正在删除两个标记后的 3 行,我不知道如何指示此命令中的出现次数。而且我不知道如何在这些标记之后有条件地粘贴第二个文件的第二个内容。有人对此有想法吗?
【问题讨论】:
-
请显示其他文件的内容和预期的输出。我是否理解正确,您只想替换第一次出现
(CO)VARIANCES之后的 3 行,并在第二次(可能以后)(CO)VARIANCES之后保留数据不变? -
@Bodo,是的,没错,你完全理解。我也想对第二个标记做同样的事情。另一个文件的内容与我要删除的 3 行相同。事实上,我想用新值替换这 3 行。
标签: string file unix sed paste