免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: suanmeilizhi
打印 上一主题 下一主题

[文本处理] shell怎么从sql语句执行结果中读取想要的字段值 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-03-27 11:05 |只看该作者
本帖最后由 pipe55_cu 于 2013-03-27 11:07 编辑
  1. # cat mysql.txt
  2. *************************** 1. row ***************************
  3.      id: 1
  4.    name: jack
  5. address: 广州中三大道
  6.    year: 2013-03-28
  7. *************************** 2. row ***************************
  8.      id: 2
  9.    name: bbb
  10. address: 北京中关村
  11.    year: 2013-03-27
  12. *************************** 3. row ***************************
  13.      id: 3
  14.    name: ccc
  15. address: 老地方 不见不散 xx
  16.    year: 2008-05-27
  17. *************************** 4. row ***************************
  18.      id: 4
  19.    name: ccc
  20. address: jjyy  \ |  leng leng 的
  21.    year: 2004-01-19
  22. *************************** 5. row ***************************
  23.      id: 5
  24.    name: ddd
  25. address: 正则表达式  [哈哈] * &、
  26.    year: 2006-01-19
  27. *************************** 6. row ***************************
  28.      id: 6
  29.    name: eee
  30. address: 笑哈哈 ,笑哈哈 。。。。 77
  31.    year: 2008-02-13
复制代码
  1. # mysql -uroot -ptest77   -e 'select * from tempdb.temp\G;' |sed -e 's/^\*.*//g' -e 's/.*: \(.*\)/\1/g' |awk 'BEGIN{RS="";FS="\n";OFS="\t"}{print $1,$2,$4,$3}'
  2. 1       jack    2013-03-28      广州中三大道
  3. 2       bbb     2013-03-27      北京中关村
  4. 3       ccc     2008-05-27      老地方 不见不散 xx
  5. 4       ccc     2004-01-19      jjyy  \ |  leng leng 的
  6. 5       ddd     2006-01-19      正则表达式  [哈哈] * &、
  7. 6       eee     2008-02-13      笑哈哈 ,笑哈哈 。。。。 77
复制代码

论坛徽章:
1
亥猪
日期:2013-10-30 23:29:55
12 [报告]
发表于 2013-03-27 13:52 |只看该作者
回复 6# Shell_HAT


    多谢多谢,我直接用的mysql  concat函数

论坛徽章:
1
亥猪
日期:2013-10-30 23:29:55
13 [报告]
发表于 2013-03-27 13:53 |只看该作者
回复 11# pipe55_cu


    我直接用mysql的concat在数据库中处理之后再取出来的

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
14 [报告]
发表于 2013-03-27 16:12 |只看该作者
回复 9# suanmeilizhi


我原来有考虑过是不是用 concat 增加分隔符的,但是又不知道用什么来分隔好,因为不好说你的内容里有哪一个字符没有用到,建议你用奇怪的字符组合来做分隔,当然这也只能降低碰撞的概率。

论坛徽章:
1
亥猪
日期:2013-10-30 23:29:55
15 [报告]
发表于 2013-03-29 12:48 |只看该作者
回复 14# seesea2517


    我也是这样想的,所以都有在数据库中查看数据,总感觉不是很通用哎

另:
如果一个字段中有中文和英文,怎么统计字数,英文单词算一个字,一个中文算一个字?
我现在直接用shell计算的字符串长度:${#str},是一个英文字母算的一个字。

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
16 [报告]
发表于 2013-03-29 13:57 |只看该作者
这个看起来有点复杂啊。对于英文,你计算空格数我看就差不多是单词数了,中文字可以用如下函数来计算,这个直接在 mysql 中计算就可以。但中英文一起就有点复杂了。

  1. mysql> select char_length("你好");
  2. +---------------------+
  3. | char_length("你好") |
  4. +---------------------+
  5. |                   2 |
  6. +---------------------+
  7. 1 row in set (0.00 sec)
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP