免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1992 | 回复: 9

[文本处理] 怎样把一个字符串的其中几个字符变成小写 [复制链接]

论坛徽章:
2
技术图书徽章
日期:2013-12-20 07:35:03技术图书徽章
日期:2014-12-16 12:59:42
发表于 2015-03-19 19:21 |显示全部楼层
本帖最后由 General_715 于 2015-03-19 19:23 编辑

字符串是这样的
parameter=""abc" "edf“ "12345" "67890" “12345 ABCDE FGHIJ””
前4个域不变,最后一个域 也就是“12345 ABCDE FGHIJ”
想变成“12345 Abcde Fghij”
就是最后这段字符,第一个域是数字,不用管,后两个域的第一个字符是大写, 其它都变成小写
该怎么变呢

论坛徽章:
59
19周年集字徽章-年
日期:2019-11-20 14:16:4715-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
发表于 2015-03-19 19:39 |显示全部楼层
  1. awk '{for(i=NF-1;i<=NF;i++)$i=substr($i,1,1) tolower(substr($i,2))}1'
复制代码

论坛徽章:
2
技术图书徽章
日期:2013-12-20 07:35:03技术图书徽章
日期:2014-12-16 12:59:42
发表于 2015-03-19 21:51 |显示全部楼层
回复 2# reyleon
多谢 明天上公司试试

   

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
发表于 2015-03-19 22:35 |显示全部楼层
本帖最后由 我是一隻羊 于 2015-03-19 22:53 编辑
  1. sed -r 's/[A-Z]{4}[ "]/\L&\E/g' inputfile
复制代码
  1. awk --re-interval -vRS=' [A-Z]|\"' '{printf $0~/[A-Z]{4}/?tolower($0)RT:$0RT}' inputfile
复制代码

论坛徽章:
2
技术图书徽章
日期:2013-12-20 07:35:03技术图书徽章
日期:2014-12-16 12:59:42
发表于 2015-03-22 12:30 |显示全部楼层
回复 4# 我是一隻羊
非常感谢


   

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
发表于 2015-03-23 13:20 |显示全部楼层
回复 1# General_715
  1. px@ubuntu:~$ echo 'parameter=""abc" "edf" "12345" "67890" "12345 ABCDE FGHIJ""' | sed -r 's/" +/"\n/g;h;s/(.*)\n(.*)/\1/;x;s//\L\2\L/;s/\b[a-z]/\U&/g;H;g;s/\n/ /g'
  2. parameter=""abc" "edf" "12345" "67890" "12345 Abcde Fghij""
复制代码

论坛徽章:
2
技术图书徽章
日期:2013-12-20 07:35:03技术图书徽章
日期:2014-12-16 12:59:42
发表于 2015-03-23 20:55 |显示全部楼层
回复 6# liion631818
多谢

   

论坛徽章:
2
技术图书徽章
日期:2013-12-20 07:35:03技术图书徽章
日期:2014-12-16 12:59:42
发表于 2015-10-26 20:49 |显示全部楼层
reyleon 发表于 2015-03-19 19:39

这两天在看awk 正好想起来您给的这个回复  请问一下
awk '{for(i=NF-1;i<=NF;i++)$i=substr($i,1,1) tolower(substr($i,2))}1'

这里的$i=substr($i,1,1)  是什么意思呢 赋予变量吗 我的理解就是substr($i,1,1) 就可以了
但是取不出结果 实验了很多次 也没想明白  请教一下

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
发表于 2015-10-26 22:53 |显示全部楼层
bash 4 新特性:

for e in $var; do
    lvar=${e,,}; echo ${lvar^};
done

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
发表于 2015-10-27 12:59 |显示全部楼层
  1. >>> data = '"abc" "edf "12345" "67890"  "12345 ABCDE FGHIJ"'                        
  2. >>>
  3. >>> [ d.capitalize() for d in data.split('"')[-2].split() if d ]
  4. ['12345', 'Abcde', 'Fghij']
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年6月4日~6日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP