在bash中为单个列插入换行符

在bash中为单个列插入换行符,bash,Bash,我在bash中有一个文件,其中的行不匹配 我需要删除标题“Product+Region”,并将信息从左侧向上移动一行。 但在我的示例中,hostname01下面的输出应该与HOST EU位于同一行 Product + Region hostname01 HOST EU hostname02

我在bash中有一个文件,其中的行不匹配

我需要删除标题“Product+Region”,并将信息从左侧向上移动一行。 但在我的示例中,hostname01下面的输出应该与HOST EU位于同一行

 Product + Region                            hostname01
 HOST EU                                     hostname02
                                             hostname03
                                             hostname04
HOST US                                      hostname05
我遇到的问题是,列表中有数百台主机,但由于第一行的原因,它们都不匹配

我试着把每一列都分成不同的文件,在右边插入一行。但问题是并非所有主机都有“产品+区域”

如果你能给我一些建议,我将不胜感激


我尝试了
grep-v-o“产品+地区”
,但没有成功:s

您只需记住前一行中的主机即可

awk '
  NR > 1 {print substr($0,1, 25) prev}
  {prev = substr($0,26)}
  END {printf "%25s%s\n", "", prev}
' file

问题是,每当您在一行上有一个
Product+Region
条目时,您需要删除该条目,并将其替换为下一行的
HOST XX
?否。因此,当我删除Product+Region时,我需要左侧的所有信息向上移动一个条目。因此,主机EU应该与主机名01在同一行,主机US应该与主机名04在同一行。如果我不清楚,很抱歉。
Product+Region
可能会在文件中出现多次,并且您需要为删除的每个
P+R
多移一行?不,它只出现在文件的顶部。所以只需要删除它一次。这个文件空间是分隔的并且手动对齐列吗?保持对齐/等是否重要?主机名总是一个单词?
P+R
是/可以是两个(或更多)单词?
 HOST EU                                     hostname01
                                             hostname02
                                             hostname03
HOST US                                      hostname04
                                             hostname05