可能重复:
Delimited by comma using AWK or SED with the tags below
我的格式如下。
[AccountID]
[CallerID]
[BilledAccountAttributes]
1111111
1111111
1111111
[\BilledAccountAttributes]
[OBIOTax]
10
20
30
[\OBIOTax]
[RINOTax]
777
888
999
[\RINOTax]
[\CallerID]
[\AccountID]
[AccountID]
[CallerID]
[BilledAccountAttributes]
2222222
2222222
2222222
[\BilledAccountAttributes]
[OBIOTax]
40
50
60
[\OBIOTax]
[\CallerID]
[\AccountID]
我希望以下格式输出(用逗号分隔,当没有显示RINOTAX时放ZERO。)
1111111,1111111,1111111, 10,20,30, 777,888,999
2222222,2222222,2222222, 40,50,60, 0, 0, 0
任何人都可以建议如何获得这个。
答案 0 :(得分:0)
我会使用awk。
我的方法是检查一行是否只包含一个数字。这可以使用正则表达式完成。 awk的文档告诉你如何在awk中使用它。
如果某行包含[\AccountID]
,请打印换行符。
我会使用一个标记变量来记住当前行中是否有先前的值。如果打印了值,请将此标记设置为true。然后根据此标记打印出逗号。如果您写一个换行符(见上文),请将标记设置为false。因此,在下一个数字之前,不会打印任何逗号。
一些伪代码(类似shell的语法):
begin { marker = 0; }
{
if 'line contains number' then
if 'marker == 1' then print ','
print current line
set marker to 1
elsif 'line is end account id' then
set marker to 0
print '\n'
fi
}
我希望这可以帮助您找到解决方案。