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