免费注册 查看新帖 |

Chinaunix

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

请问如何删除指定域? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-19 00:24 |只看该作者 |倒序浏览
有这么一个文件:[code]
1 112.00 265.00 34.00 322.00 22.00 235.00 33.00  ...
1 112.00 265.00 34.00 322.00 22.00 235.00 33.00  ...
2 108.29 265.02 33.10 322.02 21.24 235.04 32.57  ...
3 104.57 265.14 32.19 322.10 20.48 235.20 32.14  ...
.........................................

[quote]
我想把第一域删除,用
  
   $  cut -f2-11  file.old>file.new

怎么file.new还是有第一域?

   如果用awk

    $ awk '{print  $2 " " $3"  "$4 ...... $11}'   file.old

    书写太麻烦。请问有没有更好的方法?谢谢!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-06-19 00:56 |只看该作者

请问如何删除指定域?

try:

  1. sed -i 's/^[0-9]\{1,\} //' urfile
复制代码

论坛徽章:
0
3 [报告]
发表于 2005-06-19 01:21 |只看该作者

请问如何删除指定域?

[quote]原帖由 "寂寞烈火"][/quote 发表:


火哥,不行啊,第一域是从第5列开始的,我试了你的用法,还是删除不掉。直观上觉得用 cut 最方便,但是不行,不知道为什么?

论坛徽章:
0
4 [报告]
发表于 2005-06-19 09:27 |只看该作者

请问如何删除指定域?

原帖由 "guoliangbo" 发表:

第一域是从第5列开始的,

是说前面还有空格吧?
  1. sed 's/^[ \t]*[0-9][0-9]*[ \t]*//' urfile
复制代码

把\t换成实际的TAB字符。
或者如果不在乎删除后有前导空格,也可以:
  1. sed 's/[0-9][0-9]*//'
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-06-19 09:55 |只看该作者

请问如何删除指定域?

原帖由 "guoliangbo" 发表:


火哥,不行啊,第一域是从第5列开始的,我试了你的用法,还是删除不掉。直观上觉得用 cut 最方便,但是不行,不知道为什么?

  那就cut吧
flyegg 该用户已被删除
6 [报告]
发表于 2005-06-19 11:47 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2005-06-19 15:47 |只看该作者

请问如何删除指定域?

aerofox写道:
sed 's/^[ \t]*[0-9][0-9]*[ \t]*//' urfile

这个可以,美中不足的是会使小数点错位:
    100.23    89.1   56.56     100.52   ....
    100.45    87.5   46.45     101.56    ....
    98.12    89.4    79.12     101.25  ...
   


sed 's/[0-9][0-9]*//'   urfile

也存在类似的问题。我这样改动一下可以了

  1. sed 's/^[  \t]*[0-9][0-9]*//' ttt
复制代码


必须注意的是[    \t]中 \t 前必须有空格,否则不起作用,不能删除前导空格,不知为什么?

论坛徽章:
0
8 [报告]
发表于 2005-06-19 15:56 |只看该作者

请问如何删除指定域?

原帖由 "flyegg"]cut -d" " -f 2-11 filename[/quote 发表:


[quote]
................................................................
3 104.57 265.14  32.19 322.10  20.48 235.20
4 100.86 265.39  31.29 322.28  19.71 235.56
5  97.14 265.79  30.38 322.57  18.95
6  93.43 266.38  29.48 323.00  18.19
7  89.71 267.18  28.57 323.57  17.43
8  86.00 268.21  27.67 324.31  16.67
9  82.29 269.48  26.76 325.22  15.90
10  78.57 271.01  25.86 326.33  15.14 243.78
11  74.86 272.82  24.95 327.63  14.38 246.42
...............................................................


不知道为什么出现这么怪的结果,第一域没有删除,反而把后面的几个域截掉了,而且域数也不等了,好奇怪!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2005-06-19 16:27 |只看该作者

请问如何删除指定域?

  1. cut -c3-1000 file
复制代码

or
  1. cut -d" " -f2-11 file
复制代码

-d"[空格] "

论坛徽章:
0
10 [报告]
发表于 2005-06-19 19:04 |只看该作者

请问如何删除指定域?

[quote]原帖由 "guoliangbo"]必须注意的是[    \t]中 \t 前必须有空格,否则不起作用,不能删除前导空格,不知为什么?[/quote 发表:

因为你的源文件中开头有空格,其实如果你能确认没有TAB符,就不要那TAB了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP