cha*_*kes 10
当您知道csv文件的格式和文件中所需的结构时xml,制作一个可以处理转换的脚本就相当简单了。
拿文件simple.csv:
Jack,35,United States
Jill,22,United Kingdom
Run Code Online (Sandbox Code Playgroud)
您可以创建以下xml文件:
<?xml version="1.0"?>
<Customers>
<Customer>
<Name>Jack</Name>
<Age>35</Age>
<Country>United States</Country>
</Customer>
<Customer>
<Name>Jill</Name>
<Age>22</Age>
<Country>United Kingdom</Country>
</Customer>
</Customers>
Run Code Online (Sandbox Code Playgroud)
使用以下脚本:
#!/bin/bash
file_in="simple.csv"
file_out="simple.xml"
echo '<?xml version="1.0"?>' > $file_out
echo '<Customers>' >> $file_out
while IFS=$',' read -r -a arry
do
echo ' <Customer>' >> $file_out
echo ' <Name>'${arry[0]}'</Name>' >> $file_out
echo ' <Age>'${arry[1]}'</Age>' >> $file_out
echo ' <Country>'${arry[2]}'</Country>' >> $file_out
echo ' </Customer>' >> $file_out
done < $file_in
echo '</Customers>' >> $file_out
Run Code Online (Sandbox Code Playgroud)
即使您以前从未编码过,我认为这应该易于使用和修改。在while循环中逐行读取文件。
IFS是内部字段说明符。该IFS=$','声明字段分隔符的值是一个逗号。这是 CSV 文件的标准,但可以根据需要进行更改以匹配输入文件格式。
命令的-r参数read告诉它将文件中的任何反斜杠视为数据的一部分,而不是作为后续特殊字符的转义符。
该-a arry参数将文件的每一列放入一个数组(名为arry)。此示例中的列是姓名、年龄、国家/地区。换句话说,逗号之间的值。因此该行中的每一列都存储在一个数组中。
然后所需的文本就xml被包裹在值周围,并且该xml行被附加到输出文件中echo。
| 归档时间: |
|
| 查看次数: |
12814 次 |
| 最近记录: |