bash+;将文本文件转换为csv文件

bash+;将文本文件转换为csv文件,bash,csv,perl,awk,sed,Bash,Csv,Perl,Awk,Sed,我们有以下文件-info.txt 该文件包括Linux机器的名称以及每个Linux名称和值的相关参数 more info.txt LINUX_NAME=linux_machine_1 param.avarge.com 3443 param.no.com 43 param.lol.com 54 param.tis.com 24 param.er.com 254 param.nh.com 13 param.pl.com 456 param.nm.com 534 param.asd.com 236

我们有以下文件-
info.txt

该文件包括Linux机器的名称以及每个Linux名称和值的相关参数

more info.txt

LINUX_NAME=linux_machine_1
param.avarge.com 3443
param.no.com 43
param.lol.com 54
param.tis.com 24
param.er.com 254
param.nh.com 13
param.pl.com 456
param.nm.com 534
param.asd.com 236
LINUX_NAME=linux_machine_2
param.avarge.com 12
param.no.com 1
param.lol.com 2
param.tis.com 3
param.er.com 254
param.nh.com 13
param.pl.com 456
param.nm.com 534
param.asd.com 236
LINUX_NAME=linux_machine_3
param.avarge.com 13
param.no.com 100
param.lol.com 101
param.tis.com 102
param.er.com 254
param.nh.com 13
param.pl.com 456
param.nm.com 534
param.asd.com 236

.
.
.
我们希望将
info.txt
转换为csv文件,如下所示

预期结果

PARAMETER,param.avarge.com,param.no.com,param.lol.com,param.tis.com,param.er.com,param.nh.com,param.pl.com,param.nm.com,param.asd.com
linux_machine_1,3443,43,54,24,254,13,456,534,236
linux_machine_2,12,1,2,3,254,13,456,534,236
linux_machine_3,13,100,101,102,254,13,456,534,236
.
.
.

关于如何使用
bash、awk/sed、perl一行程序执行它的任何建议

示例如何从csv文件中删除


这是在假设每台机器的主机列表在所有机器上都是相同的(并且顺序相同)的情况下工作的

use warnings;
use strict;

my @machines;

while (<>)
{
    if ( / LINUX_NAME = (.+) /x )
    {
        push @machines, { name => $1, hosts => [] };
    } 
    else
    {
        chomp;
        my ( $host, $port ) = split / /;
        push @{ $machines[-1]->{hosts} }, { host => $host, port => $port };
    }
}

print join( ",", "PARAMETER", map { $_->{host} } @{ $machines[-1]->{hosts} } ), "\n";

foreach my $machine ( @machines )
{
    print join( ",", $machine->{name}, map { $_->{port} } @{ $machine->{hosts} } ), "\n";
}
使用警告;
严格使用;
我的机器;
而()
{
if(/LINUX_NAME=(.+)/x)
{
推送@machines,{name=>$1,hosts=>[]};
} 
其他的
{
咀嚼;
我的($host,$port)=拆分/;
推送{$machines[-1]->{hosts},{host=>$host,port=>$port};
}
}
打印联接(“,”,“参数”,映射{${hosts}}@{$machines[-1]->{hosts}),“\n”;
foreach my$machine(@machines)
{
打印join(“,”,$machine->{name},map{$\->{port}}@{$machine->{hosts}),“\n”;
}

欢迎来到堆栈溢出。这也是一个面向专业和热心程序员的问答网站。目标是在问题中添加一些自己的代码,以显示您自己为解决此问题所做的研究工作。是否缺少参数?或者以不同的顺序出现?参数从未丢失,也没有不同的顺序