我得到了这种文本文件:id;firstname;client;invoice;comments(这是一个例子)
001;peter;35621;C132;foo
002;jane;12345;A546;
003;robert;78945;Z456;some comments
001;peter;35621;Y456;blabla
004;terry;89740;T897;
003;robert;78945;L546;bar
我想要做的是根据客户在每行末尾的另一个字段中连接发票字段。我只能使用 bash 或 unix cli 工具(awk、sed、cut 等...),在这种情况下应该产生:
001;peter;35621;C132;foo;;C132/Y456
002;jane;12345;A546;;A546
003;robert;78945;Z456;some comments;Z456/L546
001;peter;35621;Y456;blabla;C132/Y456
004;terry;89740;T897;;T897
003;robert;78945;L546;bar;Z456/L546
到目前为止我所做的:(但我对结果并不满意,因为它看起来真的很丑)
#!/bin/bash
file="myfile.txt"
while IFS=\; read id firstname client invoice comments
do
catInvoice=""
while IFS=\; read xid xfirstname xclient xinvoice xcomments
do
if [ $client == $xclient ]
then
catInvoice="$catInvoice/$xinvoice"
fi
done < $file
catInvoice=`echo $catInvoice | sed 's/^\///'`
echo "$id;$firstname;$client;$invoice;$comments;$catInvoice"
done < $file
有什么建议么 ?谢谢。