在 bash 中的文本文件中将 1 行与多行合并

Merge 1 line with multiple lines in a text file in bash

我有一个具有以下模式的文本文件。

Heading A
 zone zonename1;
 zone zonename2;
 zone zonename3;

Heading B
 zone zonename4;
 zone zonename5;

期望输出:

  zone zonename1;Heading A;
  zone zonename2;Heading A;
  zone zonename3;Heading A;
  zone zonename4;Heading B;
  zone zonename5;Heading B;

搜索单词 "zone" 并获取相应的标题。

下面的awk可以帮到你。在 Solaris/SunOS 系统上,将 awk 更改为 /usr/xpg4/bin/awk/usr/xpg6/bin/awknawk

awk '/^Heading/{val=[=10=];next} NF{print [=10=],val";"}'  Input_file

输出如下。

 zone zonename1; Heading A;
 zone zonename2; Heading A;
 zone zonename3; Heading A;
 zone zonename4; Heading B;
 zone zonename5; Heading B;