十进制模式匹配

时间:2011-09-02 12:33:16

标签: regex perl vim sed awk

我有一个大文件,下面给出了行模式:

MDQ[11:15],IO,MDQ[10:14],,,,MDQ[12:16],TPR_AAWD[11:15]

我想修改此文件,如下所示:

MDQ[11],IO,MDQ[10],,,,MDQ[12],TPR_AAWD[11]
MDQ[12],IO,MDQ[11],,,,MDQ[13],TPR_AAWD[12]
MDQ[13],IO,MDQ[12],,,,MDQ[14],TPR_AAWD[13]
MDQ[14],IO,MDQ[13],,,,MDQ[15],TPR_AAWD[14]

我如何在sed / awk / perl / csh / vim中实现这一点? 请帮忙

2 个答案:

答案 0 :(得分:2)

awk -F '[][]' '{
    split($2, a, /:/)
    split($4, b, /:/)
    split($6, c, /:/)
    split($8, d, /:/)
    for (i=0; i < a[2]-a[1]; i++) {
        printf("%s[%d]%s[%d]%s[%d]%s[%d]\n",
            $1, a[1]+i,
            $3, b[1]+i,
            $5, c[1]+i,
            $7, d[1]+i)
    }
}'

答案 1 :(得分:0)

希望以下有帮助:

sed -e 's/:[0-9]*//g'