Awk 要添加到
我需要通过读取csv文件来附加到xml文件 i/p文件模式 test.datAwk 要添加到,awk,sed,Awk,Sed,我需要通过读取csv文件来附加到xml文件 i/p文件模式 test.dat account,bill,bill seg 12345,12445,121 14456,14467,903 14456,14467,903 我需要将每一行添加到xml文件示例xml文件中 <?xml version="1.0" encoding="UTF-8"?> <BusinessConfiguration xmlns="http://www.portal.com/schem
account,bill,bill seg
12345,12445,121
14456,14467,903
14456,14467,903
我需要将每一行添加到xml文件示例xml文件中
<?xml version="1.0" encoding="UTF-8"?>
<BusinessConfiguration
xmlns="http://www.portal.com/schemas/BusinessConfig"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.portal.com/schemas/BusinessConfig BusinessConfiguration.xsd">
<!-- Sample input file for pin_bill_accts containing parameters for bill run management -->
<!-- Modify according to guidelines -->
<BillRunConfiguration>
<!-- List of DOMs for this bill run -->
<DOMList>
<DOM>---1</DOM>
</DOMList>
<BillSegmentList>
</BillSegmentList>
<!-- List of billing segments for this bill run -->
<BillingList>
</BillingList>
---1
我需要将csv中的前2条记录添加到标记下面,如
<BillingList>
<Account>12345</Account>
<Billinfo>12445</Billinfo>
</BillingList>
<BillingList>
<Account>14456</Account>
<Billinfo>14467</Billinfo>
</BillingList>
12345
12445
14456
14467
我目前有以下代码:
#!/bin/awk -f
NR==FNR{ a[NR]=$0; next; }
/<BillingList>/{
print;
gsub("'","",a[++i]);
n=split(a[i],arr,",");
if( n!= 3) { next }
print "\t<Account>",arr[1],"</Account>";
print "\t<Billinfo>",arr[2],"</Billinfo>";
next;
}1
#/垃圾箱/awk-f
NR==FNR{a[NR]=$0;下一步;}
//{
打印
gsub(“,”,a[++i]);
n=拆分(a[i],arr,“,”;
如果(n!=3){next}
打印“\t”,arr[1],”;
打印“\t”,arr[2],”;
下一个
}1
但它只替换第一条记录,然后停止。
我对unix完全陌生,因此请帮助我解决这个问题。这将为您提供该部分
$ awk -F, # use comma as field separator
'NR>1&&NF{ # skip first line and blank lines
print # print the following
"<BillingList>
<Account>"$1"</Account> # insert first field
<BillInfo>"$2"</BillInfo> # insert second field
</BillingList>"
}' data.txt
$awk-F,#使用逗号作为字段分隔符
'NR>1&&NF{#跳过第一行和空行
打印#打印以下内容
"
“$1”#插入第一个字段
“$2”#插入第二个字段
"
}'data.txt
如果需要,可以在正确的位置添加换行符。输出xml文件是预先存在的还是从头开始创建的?您如何读取csv文件?您当前的代码是什么样子的?我编写了下面的代码,但是它只重新编译第一个实例#/bin/awk-FNR==FNR{a[NR]=$0;next;}/{print;gsub(“,”,a[++i]);n=split(a[i],arr,”,”);如果(n!=3){next}print“\t”,arr[1],”;print“\t”,arr[2],”;next;}1你应该在问题中添加该代码,它希望csvsorry JAL第一个计时器中的每一行的BillingList标记都是xml格式的,不会再出现了。谢谢你也能解释一下代码吗?嗨,代码只添加了所需的段,但我需要将它们附加到同一个xml文件中。你能告诉我怎么做吗---1嗨,我需要在xml标记之前添加段。你能告诉我怎么做吗?你可以一直使用awk,但使用sed可能更容易,只需两步`sed-e”//r awkoutput.txt“template.xml”已在模板中,因此应修改awk以仅生成子节点。