免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5384 | 回复: 12

[文本处理] SQL查询输出格式化处理,求助! [复制链接]

论坛徽章:
0
发表于 2013-10-28 09:44 |显示全部楼层
本帖最后由 鸟哥のlinux 于 2013-10-28 10:00 编辑

在shell 中有一个查询:
select id,name from eam_resource where name like '%E10337%' and fsystem='false';

QQ图片20131028094031.jpg


shell输出到 /tmp/1.txt文本内容为:

# cat /tmp/1.txt
44828 | AO01-15 HQ Agent 4.4.0 44833 | AO01-15 Linux File System /dev/sda5 mounted on / (local/ext3) 44834 | AO01-15 Linux File System /dev/sda1 mounted on /boot (local/ext3) 44835 | AO01-15 Linux File System /dev/sda7 mounted on /home (local/ext3) 44836 | AO01-15 Linux File System /dev/sda3 mounted on /usr (local/ext3) 44837 | AO01-15 Linux File System /dev/sda2 mounted on /var/lib (local/ext3) 44838 | AO01-15 Linux File System /dev/sdb1 mounted on /backup (local/ext3) 44839 | AO01-15 Linux CPU 1 (1861Mhz Intel Xeon) 44840 | AO01-15 Linux CPU 2 (1861Mhz Intel Xeon) 44841 | AO01-15 Linux CPU 3 (1861Mhz Intel Xeon) 44842 | AO01-15 Linux CPU 4 (1861Mhz Intel Xeon) 44843 | AO01-15 Linux sshd Process 44844 | AO01-15 Linux Network Interface lo (loopback) 44845 | AO01-15 Linux Network Interface eth0 (ethernet) 44846 | AO01-15 Linux Network Interface eth1 (ethernet) 44826 | AO01-15

现在要输出这样的格式:

"22994":"E10337", "22995":"E10337 HQ Agent 4.4.0", "23000":"E10337 Linux CPU 1 (2261Mhz Intel Xeon)" ...

求支招~在此先谢了!

论坛徽章:
38
辰龙
日期:2013-08-21 15:45:19寅虎
日期:2014-06-09 12:52:17双鱼座
日期:2014-06-10 12:42:44巨蟹座
日期:2014-06-12 23:17:17戌狗
日期:2014-06-17 09:53:29未羊
日期:2014-10-10 13:45:41申猴
日期:2015-03-03 17:21:37亥猪
日期:2015-03-03 17:22:002015亚冠之广州富力
日期:2015-05-12 16:34:522015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:08平安夜徽章
日期:2015-12-26 00:06:30
发表于 2013-10-28 10:07 |显示全部楼层
本帖最后由 关阴月飞 于 2013-10-28 10:13 编辑

目测一下:
直接把输出用管道传给AWK:
  1. awk -vORS=, '{print "\042"$1"\042:\042"$2"\042"}'
复制代码

论坛徽章:
30
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3719周年集字徽章-19
日期:2019-08-27 13:31:2619周年集字徽章-CU
日期:2019-09-08 23:26:25
发表于 2013-10-28 10:08 |显示全部楼层
shell输出到 /tmp/1.txt文本内容为

什么数据库?
把你的完整代码贴出来看看

论坛徽章:
0
发表于 2013-10-28 10:19 |显示全部楼层
回复 3# Shell_HAT

PostgreSQL  SHELL其中代码为:
  1. #!/bin/bash
  2. SQL=`psql -h 192.168.137.254  -p 5432  -U admin_user admin_database -q -t -c  "select id,name from eam_resource where name like '%E10337%' and fsystem='false';"`
复制代码
谢谢~

论坛徽章:
38
辰龙
日期:2013-08-21 15:45:19寅虎
日期:2014-06-09 12:52:17双鱼座
日期:2014-06-10 12:42:44巨蟹座
日期:2014-06-12 23:17:17戌狗
日期:2014-06-17 09:53:29未羊
日期:2014-10-10 13:45:41申猴
日期:2015-03-03 17:21:37亥猪
日期:2015-03-03 17:22:002015亚冠之广州富力
日期:2015-05-12 16:34:522015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:08平安夜徽章
日期:2015-12-26 00:06:30
发表于 2013-10-28 10:24 |显示全部楼层
回复 4# 鸟哥のlinux


导到文件后,全变成了一行了??   

论坛徽章:
0
发表于 2013-10-28 10:33 |显示全部楼层
回复 5# 关阴月飞

是的
   

论坛徽章:
0
发表于 2013-10-28 10:33 |显示全部楼层
回复 5# 关阴月飞

是的
   

论坛徽章:
38
辰龙
日期:2013-08-21 15:45:19寅虎
日期:2014-06-09 12:52:17双鱼座
日期:2014-06-10 12:42:44巨蟹座
日期:2014-06-12 23:17:17戌狗
日期:2014-06-17 09:53:29未羊
日期:2014-10-10 13:45:41申猴
日期:2015-03-03 17:21:37亥猪
日期:2015-03-03 17:22:002015亚冠之广州富力
日期:2015-05-12 16:34:522015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:08平安夜徽章
日期:2015-12-26 00:06:30
发表于 2013-10-28 12:38 |显示全部楼层
回复 7# 鸟哥のlinux

试试这样合不合要求:
  1. awk --re-interval -vRS='[0-9]{5} +\\|'  'NF+=0{printf "\042"a "\042"$0"\042,"}{sub(/ +\|/,"\042:",RT);a=RT}'  urfile  
复制代码

论坛徽章:
0
发表于 2013-10-29 14:59 |显示全部楼层
回复 8# 关阴月飞

非常感谢
我现在得出的结果是:
  1. "45297":"SND-0239","45300":"SND-0239 HQ Agent 4.6.6","45303":"SND-0239 Linux File System /dev/mapper/VolGroup00-LogVol00 mounted on / (local/ext3)","45304":"SND-0239 Linux File System /dev/sda1 mounted on /boot (local/ext3)","45305":"SND-0239 Linux Network Interface lo (loopback)","45306":"SND-0239 Linux Network Interface eth0 (ethernet)","45307":"SND-0239 Linux Network Interface eth1 (ethernet)","45308":"SND-0239 Linux CPU 1 (2128Mhz Intel Xeon)","45309":"SND-0239 Linux CPU 2 (2128Mhz Intel Xeon)","45310":"SND-0239 Linux CPU 3 (2128Mhz Intel Xeon)","45311":"SND-0239 Linux CPU 4 (2128Mhz Intel Xeon)","45312":"SND-0239 Linux sshd Process",
复制代码
加入要在始末加上{},最终显示为:
  1. {"45297":"SND-0239","45300":"SND-0239 HQ Agent 4.6.6","45303":"SND-0239 Linux File System /dev/mapper/VolGroup00-LogVol00 mounted on / (local/ext3)","45304":"SND-0239 Linux File System /dev/sda1 mounted on /boot (local/ext3)","45305":"SND-0239 Linux Network Interface lo (loopback)","45306":"SND-0239 Linux Network Interface eth0 (ethernet)","45307":"SND-0239 Linux Network Interface eth1 (ethernet)","45308":"SND-0239 Linux CPU 1 (2128Mhz Intel Xeon)","45309":"SND-0239 Linux CPU 2 (2128Mhz Intel Xeon)","45310":"SND-0239 Linux CPU 3 (2128Mhz Intel Xeon)","45311":"SND-0239 Linux CPU 4 (2128Mhz Intel Xeon)","45312":"SND-0239 Linux sshd Process", }
复制代码
该怎么处理呢?

论坛徽章:
38
辰龙
日期:2013-08-21 15:45:19寅虎
日期:2014-06-09 12:52:17双鱼座
日期:2014-06-10 12:42:44巨蟹座
日期:2014-06-12 23:17:17戌狗
日期:2014-06-17 09:53:29未羊
日期:2014-10-10 13:45:41申猴
日期:2015-03-03 17:21:37亥猪
日期:2015-03-03 17:22:002015亚冠之广州富力
日期:2015-05-12 16:34:522015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:08平安夜徽章
日期:2015-12-26 00:06:30
发表于 2013-10-29 15:02 |显示全部楼层
本帖最后由 关阴月飞 于 2013-10-29 15:28 编辑

回复 9# 鸟哥のlinux

  1. awk --re-interval -vRS='[0-9]{5} +\\|'  'BEGIN{printf "{"}NF+=0{printf "\042"a "\042"$0"\042,"}{sub(/ +\|/,"\042:",RT);a=RT}END{print "}"}'  urfile  
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。




----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP