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