免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3111 | 回复: 8
打印 上一主题 下一主题

[文本处理] tr剔除空格冒号 [复制链接]

论坛徽章:
1
巨蟹座
日期:2014-04-23 23:20:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-08 00:25 |只看该作者 |倒序浏览
想删除"a b c "的最后一个空格,
echo \"a b c \"|tr ' "' '"'
得到结果"a"b"c""
本来想得到"a b c"
啥情况

论坛徽章:
0
2 [报告]
发表于 2014-02-08 09:21 |只看该作者
echo \"a b c \"|sed -r 's/(^.*[a-z])(\s+)(\")/\1\3/g'

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
3 [报告]
发表于 2014-02-08 09:41 |只看该作者
回复 1# registcn
  1.    echo \"a b c \" |sed 's/ "/"/'
复制代码

论坛徽章:
1
巨蟹座
日期:2014-04-23 23:20:17
4 [报告]
发表于 2014-02-08 11:46 |只看该作者
谢谢各位,我确实用sed做的,问题是,为啥tr不对呢?rt的结果错在哪里?回复 3# 关阴月飞


   

论坛徽章:
6
摩羯座
日期:2013-12-27 09:45:04技术图书徽章
日期:2014-01-27 12:40:06辰龙
日期:2014-02-28 15:12:52巳蛇
日期:2014-03-21 17:06:27未羊
日期:2014-04-15 20:12:41黑曼巴
日期:2016-08-02 11:00:06
5 [报告]
发表于 2014-02-08 11:56 |只看该作者
回复 4# registcn


    tr set1 set2
我的理解是 set1 与 set2 中的 字符是一一对应的,要是set1 比 set2字符数多 set1中多余的字符都是用set2的最后一个字符

论坛徽章:
2
水瓶座
日期:2014-02-28 14:20:09辰龙
日期:2014-06-16 13:18:51
6 [报告]
发表于 2014-02-08 18:21 |只看该作者
本帖最后由 rogantianwz 于 2014-02-09 20:16 编辑

回复 5# laliheyi


    使用 tr 'abc' '012' < yourfile 时 yourfile中的a-->0,b-->1,c-->2

    如果是tr 'abcd' '012' < yourfile ,则是a-->0,b-->1,c-->2,d-->2

所以echo \"a b c \"|tr ' "' '"'   会将空格都替换成双引号 ,双引号也替换成双引号

论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
7 [报告]
发表于 2014-02-09 14:52 |只看该作者
空格双引号都替换成双引号了

论坛徽章:
3
酉鸡
日期:2014-04-23 17:17:56丑牛
日期:2014-05-08 11:41:302015亚冠之德黑兰石油
日期:2015-08-03 11:14:27
8 [报告]
发表于 2014-02-09 16:39 |只看该作者
tr果然是这样的
使用这样的命令替换:echo \"abc \" | tr ' \"' '2'
结果是这样:2abc22,tr把所有的双引号以及空格都替换成了2,

这个问题,可以使用sed直接将空格删掉就好了,这样比较简单: echo \"abc \" | sed 's/ //'

论坛徽章:
6
摩羯座
日期:2013-12-27 09:45:04技术图书徽章
日期:2014-01-27 12:40:06辰龙
日期:2014-02-28 15:12:52巳蛇
日期:2014-03-21 17:06:27未羊
日期:2014-04-15 20:12:41黑曼巴
日期:2016-08-02 11:00:06
9 [报告]
发表于 2014-02-10 08:50 |只看该作者
本帖最后由 laliheyi 于 2014-02-10 08:50 编辑

回复 1# registcn

tr版本
  1. tr (GNU coreutils) 5.93
  2. Copyright (C) 2005 Free Software Foundation, Inc.
  3. This is free software.  You may redistribute copies of it under the terms of
  4. the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
  5. There is NO WARRANTY, to the extent permitted by law.

  6. Written by Jim Meyering.
复制代码
tr帮助中的一段话
  1. When `tr' is performing translation, SET1 and SET2 typically have
  2. the same length.  If SET1 is shorter than SET2, the extra characters at
  3. the end of SET2 are ignored.

  4.    On the other hand, making SET1 longer than SET2 is not portable;
  5. POSIX says that the result is undefined.  In this situation, BSD `tr'
  6. pads SET2 to the length of SET1 by repeating the last character of SET2
  7. as many times as necessary.  System V `tr' truncates SET1 to the length
  8. of SET2.
  9.    By default, GNU `tr' handles this case like BSD `tr'.  When the
  10. `--truncate-set1' (`-t') option is given, GNU `tr' handles this case
  11. like the System V `tr' instead.  This option is ignored for operations
  12. other than translation.
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP