发布网友 发布时间: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]
}' 文件