使用带有以下标记的AWK或SED以逗号分隔

时间:2012-07-12 20:56:48

标签: linux shell unix sed awk

使用带有以下标签的AWK或SED逗号分隔:

[BEGIN AccountID]
        [BEGIN CallerID]
            [BEGIN Billed Account Attributes]
            1111111
            1111111
            1111111
            [END Billed Account Attributes]

        [BEGIN OBIO Tax]
        10
        20
        30
        [END OBIO Tax]

        [BEGIN RINO Tax]
        777
        888
        999
        [END RINO Tax]
    [BEGIN CallerID]
[END AccountID]


[BEGIN AccountID]
    [BEGIN CallerID]
        [BEGIN Billed Account Attributes]
        2222222
        2222222
        2222222
        [END Billed Account Attributes]

        [BEGIN OBIO Tax]
        40
        50
        60
        [END OBIO Tax]

    [BEGIN CallerID]
[END AccountID]

我想要一个AWK或SED脚本来打印它:

1111111,1111111,1111111,  10,20,30,  777,888,999

2222222,2222222,2222222,  40,50,60,    0,  0,  0
....
....
....

以逗号分隔,并在未显示RINO TAX时输入ZERO。

非常感谢!!!!

1 个答案:

答案 0 :(得分:1)

这可能适合你(GNU sed):

sed '/\[BEGIN AccountID\]/,/\[END AccountID\]/!d;/\[BEGIN AccountID\]/{h;d};/./H;/\[END AccountID\]/!d;g;s/\n*\[[^\n]*\n*//g;s/\n/,/g;s/\s*//g;ta;:a;s/,//9;t;s/$/0,0,0/' file

N.B。这会删除空格和空行。