在这种情况下,有2个输入:
tab-separated txt
)主数据txt
文件如下所示
abc paris
xyz london
jkl dubai
此处的要求是将输出文件作为模板填充主数据文件中的数据。
inputdir="/home/InputFile"
for line in $(cat $inputdir/$1)
do
content=${line}
name=$(echo $content|awk -F'\t' '{print $1}')
place=$(echo $content|awk -F'\t' '{print $2}')
echo "$name"
echo "$place"
done
请建议最好的方法来完成它并将此内容复制到输出文件将是XML
,如下所示:
<ROOT>
<FileHeader>
<name>abc</name> --this_is input of contents copied from above script
</FileHeader>
<FileDetail>
<place>paris</place> --this_is input of contents copied from above script
</FileDetail>
<FileHeader>
<name>xyz</name>
</FileHeader>
<FileDetail>
<place>london</place>
</FileDetail>
<FileHeader>
<name>jkl</name>
</FileHeader>
<FileDetail>
<place>dubai</place>
</FileDetail>
</ROOT>
答案 0 :(得分:1)
您可以使用以下脚本:
#!/usr/bin/env bash
while read line; do
word1=$(sed "s/^\(\S*\).*/\1/" <<< "$line")
word2=$(sed "s/.*\s\(\S.*\)$/\1/" <<< "$line")
sed -i'' "0,/<name></s/<name></<name>$word1</" outputfile
sed -i'' "0,/<place></s/<place></<place>$word2</" outputfile
done < inputfile
此处inputfile
包含由空格或制表符分隔的单词列表:
abc paris
xyz london
jkl dubai
和outputfile
最初是:
<ROOT>
<FileHeader>
<name></name>
</FileHeader>
<FileDetail>
<place></place>
</FileDetail>
<FileHeader>
<name></name>
</FileHeader>
<FileDetail>
<place></place>
</FileDetail>
<FileHeader>
<name></name>
</FileHeader>
<FileDetail>
<place></place>
</FileDetail>
</ROOT>
运行脚本后,outputfile
变为:
<ROOT>
<FileHeader>
<name>abc</name>
</FileHeader>
<FileDetail>
<place>paris</place>
</FileDetail>
<FileHeader>
<name>xyz</name>
</FileHeader>
<FileDetail>
<place>london</place>
</FileDetail>
<FileHeader>
<name>jkl</name>
</FileHeader>
<FileDetail>
<place>dubai</place>
</FileDetail>
</ROOT>