首 页 行业资讯 新车 试驾评测 养车用车 车型库

用awk或sed怎么能实现取第一个值和最后的值?

发布网友 发布时间:2022-04-21 14:55

我来回答

1个回答

热心网友 时间:2023-07-12 05:06

#!/bin/bash

output()
{
cat<<EOF
190000020017|{ { NAS-IP-Address {61.148.2.76} }  { NAS-Port-Id {slot=63;subslot=2;port=8;vlanid=75;vlanid2=16;} }  { ai-Agreement-Id {190000020017} }  { ai-Max-Session {1} }  { ai-author-profile {10M@6} }   { ai-RoamingLevel {1} }  { Framed-IP-Address {0.0.0.0} }  { ai-Service-State {1} }  { ai-SvcAuthen {1003} }  { ai-SvcAcct {11003} }  { ai-ldap-flag {0} }  { NAS-Port {0000} }  { Filter-Id {0000} }  { ai-UserNode {120} }  {AI-Credit-Level {2}} {ai-Service-Id {8010001}} {username {190000020017}} {password {dbc6bc9494167f53}}}
EOF
}

output | awk '{
        print $0
        if(match($0, /username {([0-9]+)}} {password {(.+)}}}$/, adata))
                print adata[1] " " adata[2]
}'

追问文件中有几百行,这种数据。我用awk取时报错提示“包含太多字段”,只取了第一行,剩下的行没取到。如果写成脚本,后面跟要取的文件怎么实现?

追答

多少行都应该可以处理的,你的awk是gawk么?awk --version输出是什么?


你用的时候应该这样:


awk '{

        print $0

        if(match($0, /username {([0-9]+)}} {password {(.+)}}}$/, adata))

                print adata[1] " " adata[2]

}' 文件

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com