QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1870|回复: 3

帮忙:以下两个怎么处理

[复制链接]
发表于 2009-3-21 17:40:09 | 显示全部楼层 |阅读模式
有下述文本
12a   13   de
123 45 fe
34d          5d    g6
每行的字符间隔是空格" ",但是空格的个数各不一样
我用cut去尝试抽取其中任一列(例如第二列:13  45 5d),发现它们间隔必须是tab 或者相等长度的空格才行,尝试很久也不能解决,请问怎么处理?
还有假如我想把第一行第一列的12a和第三行第一列的34d分别替换成12a88和34d88,使用sed 's/[1,3][2,4][a,d]/88/g'  会把12a和34d都替换成88,怎么在使用正则表达试匹配下保持原字符不变,只在原字符后面或其中插入另外的字符?
 楼主| 发表于 2009-3-21 18:04:46 | 显示全部楼层
看到第一个问题可以用awk方便的处理
还是不知道第二个问题怎么处理
回复

使用道具 举报

发表于 2009-3-21 18:04:54 | 显示全部楼层
cut 不熟悉,不过可以先把多个空格都替换成一个吧。
第二个用参数应该可以,类似这样s/([1,3][2,4][a,d])/\188/g的,具体的我记不清楚了。
回复

使用道具 举报

 楼主| 发表于 2009-3-21 23:44:12 | 显示全部楼层
怎么把多个空格替换成一个,因为每行的空格个数不一定相等,比如第一行的有3个连续空格,而第二行有5个联系空格。
---------------

命令太多了!! 实在记不住啊!
发现可以使用: tr -s " " <file 来删除多余的空格
----------------
原来这样也可以  sed 's/ * / /g' file

第二个问题还是求高手帮忙啊!!

[ 本帖最后由 lsh0211 于 2009-3-22 01:38 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-3-29 07:12 , Processed in 0.052721 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表