我的文件如下“|”分隔。
1234|This is Line 1|Yes
5678|This is Line 2|Yes
9999|This is Line 3|Yes
我已经有了一个XML文件,我想在不同的位置插入第1,第2,第3列,并为每行创建1个XML文件,如下所示
<tag1>1234</tag1>
<tag2> This is line 1 </tag2>
<tag3> Yes </tag3>
基本上我想从第一个文件中读取每一行,并通过在不同位置插入字段为每一行创建一个XML文件。任何有关如何在shell脚本中执行此操作的帮助都会有很大帮助
我尝试了这个,但for循环没有正确读取第二列(“这是第1行”)。它将每个空格作为一个字段并创建多个文件
for i in `cat file | awk -F"|" '{print $1}'`
do
echo $i
j=`cat addxml | grep "tag2" | awk -F ">" -v var="$i" '{print $1">"var$2">"}'`
sed 's|<tag2></tag2>|'"${j}"'|g' addxml > input1.xml
done
答案 0 :(得分:3)
请说......
awk -F"|" '{file="file_"NR
for (i=1;i<=3;i++)
printf "<tag%d>%s</tag%d>\n", i, $i, i >> file
}' file
所以你有这样的文件:
$ tail file*
==> file_1 <==
<tag1>1234</tag1>
<tag2>This is Line 1</tag2>
<tag3>Yes</tag3>
==> file_2 <==
<tag1>5678</tag1>
<tag2>This is Line 2</tag2>
<tag3>Yes</tag3>
==> file_3 <==
<tag1>9999</tag1>
<tag2>This is Line 3</tag2>
<tag3>Yes</tag3>