awk中如何用正则表达式判断某位数值的位数?

比如有如下记录:1|无缝钢管|GB8163|D114x52|热压弯头|GB12459|DN100。。。。若干条记录10|连接件|HG-16|DN10011|支架|HG-1... 比如有如下记录:
1|无缝钢管|GB8163|D114x5
2|热压弯头|GB12459|DN100
。。。。若干条记录
10|连接件|HG-16|DN100
11|支架|HG-16|DN100
。。。。若干条记录
现在想用两个数组将第一位是各位数的记录和第一位是两位数的记录分开,即将1~9条存储于Lines1[1]~Lines1[9]中,然后将10~99存储于Lines2[1]~Lines2[99]中。
想请教一下,在用if判断时,正则表达式应该如何表达?
谢谢
展开
 我来答
luneng8183
推荐于2016-03-15 · TA获得超过901个赞
知道小有建树答主
回答量:606
采纳率:100%
帮助的人:508万
展开全部
#!/bin/bash

output()
{
cat<<EOF
1|23
2|24
10|30
11|44
EOF
}

output | awk -F"|" '{
        if($1 ~ /^[0-9]{1,1}$/)
                line1[$1]=$2
        else if($1 ~ /^[0-9]{2,2}$/)
                line2[$1]=$2
}
END {
        print "line1 contents"
        for(key in line1)
                print "key " key " value " line1[key]

        print "line2 contents"
        for(key in line2)
                print "key " key " value " line2[key]
}'
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hwguan
2013-09-10 · TA获得超过1万个赞
知道大有可为答主
回答量:4405
采纳率:0%
帮助的人:4154万
展开全部
正则表达式匹配开头的行数么?
那么模式应该写成
^[0-9]\{1}
花括号后面的数字表示数字位数
^^[0-9]\{2} 就是两位,依此类推
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7e5bb7478
2013-09-09 · TA获得超过450个赞
知道小有建树答主
回答量:547
采纳率:0%
帮助的人:237万
展开全部
给他们赋值=X啊!来判断!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式