如何将信息和结果复制到列中(Linux)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何将信息和结果复制到列中(Linux),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3982字,纯文字阅读大概需要6分钟。
内容图文
![如何将信息和结果复制到列中(Linux)](/upload/InfoBanner/zyjiaocheng/949/67005f859e584a6093dd391165305c58.jpg)
我要处理以下数据,以使每个以< SUBBEGIN开始并以< SUBEND结尾的数据块都将被处理.
<SUBBEGIN
AARB:28E5A4ERR
SUBSCRIBERIDENTIFIER:234810128
GBRUL:0
GBRDL:0
SUBSCRIPTION:5093201&733D8E01CA&1&FFFFFFFFFFFFFF&20160729121530&FFFFFFFFFFFFFF&2&1&FFFFFFFFFFFFFFFF&255&0&255&256&FFFFFFFFFFFFFFFF&0&0&128&1
SUBSCRIPTION:5233555&733D8E01CA&1&FFFFFFFFFFFFFF&20160730091530&FFFFFFFFFFFFFF&2&1&FFFFFFFFFFFFFFFF&255&0&255&256&FFFFFFFFFFFFFFFF&0&0&128&1
QUOTA:5093201&733D8201D10D270D&1&1&0&1&20171121043000&20171221043000&0&255&0&0&0&0&0&0&0&0&0
QUOTA:5233555&633D8201D10D270D&1&1&0&1&20171121043000&20171221043000&0&255&0&0&0&0&0&0&0&0&0
ONLINESTATUS:2
LATEST_ONLINE_TIME:20170330191209
CREATETYPE:0
MAXOFFLINEDAYS:0
<SUBEND
<SUBBEGIN
BBRB:28E5A4ETT
SUBSCRIBERIDENTIFIER:234825528
GBRUL:0
GBRDL:0
SUBSCRIPTION:5093333&733D8E01CA&1&FFFFFFFFFFFFFF&20160729121530&FFFFFFFFFFFFFF&2&1&FFFFFFFFFFFFFFFF&255&0&255&256&FFFFFFFFFFFFFFFF&0&0&128&1
QUOTA:5093264&733D8201D10D270D&1&1&0&1&20171121043000&20171221043000&0&255&0&0&0&0&0&0&0&0&0
ONLINESTATUS:2
LATEST_ONLINE_TIME:20170330191209
CREATETYPE:0
MAXOFFLINEDAYS:0
<SUBEND
<SUBBEGIN
CCRB:28E5A4ESS
SUBSCRIBERIDENTIFIER:234993527
GBRUL:0
GBRDL:0
SUBSCRIPTION:5093264&733D8E01MB&1&FFFFFFFFFFFFFF&20160729121530&FFFFFFFFFFFFFF&2&1&FFFFFFFFFFFFFFFF&255&0&255&256&FFFFFFFFFFFFFFFF&0&0&128&1
SUBSCRIPTION:9093201&733D8E01CA&1&FFFFFFFFFFFFFF&20160729121530&FFFFFFFFFFFFFF&2&1&FFFFFFFFFFFFFFFF&255&0&255&256&FFFFFFFFFFFFFFFF&0&0&128&1
SUBSCRIPTION:6598777&733D8E01CA&1&FFFFFFFFFFFFFF&20160730091530&FFFFFFFFFFFFFF&2&1&FFFFFFFFFFFFFFFF&255&0&255&256&FFFFFFFFFFFFFFFF&0&0&128&1
QUOTA:5093264&733D8201D10D270D&1&1&0&1&20171121043000&20171221043000&0&255&0&0&0&0&0&0&0&0&0
QUOTA:9093201&733D8201D10D270D&1&1&0&1&20171121043000&20171221043000&0&255&0&0&0&0&0&0&0&0&0
QUOTA:6598777&633D8201D10D270D&1&1&0&1&20171121043000&20171221043000&0&255&0&0&0&0&0&0&0&0&0
ONLINESTATUS:2
LATEST_ONLINE_TIME:20170330191209
CREATETYPE:0
MAXOFFLINEDAYS:0
<SUBEND
我已经使用了这个linux命令:
grep -e SUBSCRIBERIDENTIFIER -e SUBSCRIPTION -e QUOTA
但是我得到的结果是行,而我需要将其放在下面的列中(请将下面的期望复制到ultredit程序中以查看完整长度):
SUBSCRIBERIDENTIFIER:234810128 SUBSCRIPTION:5093201 SUBSCRIPTION:5233555 QUOTA:5093201 QUOTA:5233555
SUBSCRIBERIDENTIFIER:234825528 SUBSCRIPTION:5093333 QUOTA:5093264
SUBSCRIBERIDENTIFIER:234993527 SUBSCRIPTION:5093264 SUBSCRIPTION:9093201 SUBSCRIPTION:6598777 QUOTA:5093264 QUOTA:9093201 QUOTA:6598777
请帮忙.
解决方法:
尝试:
$awk -F'&' '{sub(/^[[:blank:]]+/,"")} /SUBSCRIBERIDENTIFIER/{id=$1} /SUBSCRIPTION/{s=s","$1} /QUOTA/{q=q","$1} /SUBEND/{print id,s,q; id=""; s=""; q=""}' data | column -t | tr , ' '
SUBSCRIBERIDENTIFIER:234810128 SUBSCRIPTION:5093201 SUBSCRIPTION:5233555 QUOTA:5093201 QUOTA:5233555
SUBSCRIBERIDENTIFIER:234825528 SUBSCRIPTION:5093333 QUOTA:5093264
SUBSCRIBERIDENTIFIER:234993527 SUBSCRIPTION:5093264 SUBSCRIPTION:9093201 SUBSCRIPTION:6598777 QUOTA:5093264 QUOTA:9093201 QUOTA:6598777
这个怎么运作
> -F’&’
这告诉awk使用&作为字段分隔符.
> sub(/ ^ [[::空白:]] /,“”)
这将从每一行中删除所有前导空白.
> / SUBSCRIBERIDENTIFIER / {id = $1}
这样会将SUBSCRIBERIDENTIFIER信息保存在变量ID中.
> / SUBSCRIPTION / {s = s“,” $1}
这样会将所有订阅信息以逗号分隔的格式保存在变量s中.
> / QUOTA / {q = q“,” $1}
这样会将所有QUOTA信息以逗号分隔的格式保存在变量q中.
> / SUBEND / {打印ID,S,Q; id =“”; s =“”; q =“”}
每次到达SUBEND时,我们都会打印一行数据并重置所有变量
>列-t
这会将输出数据格式化为多列.
> tr,’
这将从输出中删除逗号.
更新资料
根据您的评论,您正在使用的文件的名称是UPCC_5_20171124144300_0_huabiao1_601.txt,并且您要将结果附加到文件Result.txt中.在这种情况下,请运行:
awk -F'&' '{sub(/^[[:blank:]]+/,"")} /SUBSCRIBERIDENTIFIER/{id=$1} /SUBSCRIPTION/{s=s","$1} /QUOTA/{q=q","$1} /SUBEND/{print id,s,q; id=""; s=""; q=""}' UPCC_5_20171124144300_0_huabiao1_601.txt | column -t | tr , ' ' >>Result.txt
请注意,此处不需要cat命令.
内容总结
以上是互联网集市为您收集整理的如何将信息和结果复制到列中(Linux)全部内容,希望文章能够帮你解决如何将信息和结果复制到列中(Linux)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。