免费注册 查看新帖 |

Chinaunix

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

求救,超级变态的做法。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-27 17:22 |只看该作者 |正序浏览
大家好,我想对特定的列的特定内容进行替换,请知道的指点,个人感觉这种做法是超变态的,不过没有办法,只有请知道的告诉一声。多谢。请注意20列,只对20列操作,而且必须是LLXHH才替换。
替换前
1 1LXL XH1H 1H00 1 LL 1H 1H 1111L 111L HHHH 10 L
1 1LXL XH1H 1H00 1 LL 1H 1H 1111L 111L HHHH 10 L
1 1LXL XH1H 1H00 1 LL 1H 1H 1111L 111L HHHH 10 L
1 1LXL XH1H 1H00 1 LX 1H 1H 1111L 111L HHHH 10 L
1 1LXL XH1H 1H00 1 LH 1H 1H 1111L 111L HHHH 10 L
1 1LXL XH1H 1H00 1 LH 1H 1H 1111L 111L HHHH 10 L
1 1LXL XH1H 1H00 1 LH 1H 1H 1111L 111L HHHH 10 L
替换后
1 1LXL XH1H 1H00 1 LL 1H 1H 1111L 111L HHHH 10 L
1 1LXL XH1H 1H00 1 LX 1H 1H 1111L 111L HHHH 10 L
1 1LXL XH1H 1H00 1 LX 1H 1H 1111L 111L HHHH 10 L
1 1LXL XH1H 1H00 1 LX 1H 1H 1111L 111L HHHH 10 L
1 1LXL XH1H 1H00 1 LX 1H 1H 1111L 111L HHHH 10 L
1 1LXL XH1H 1H00 1 LX 1H 1H 1111L 111L HHHH 10 L
1 1LXL XH1H 1H00 1 LH 1H 1H 1111L 111L HHHH 10 L

论坛徽章:
0
46 [报告]
发表于 2006-11-30 08:49 |只看该作者
原帖由 wsgwz2004 于 2006-11-27 17:22 发表
大家好,我想对特定的列的特定内容进行替换,请知道的指点,个人感觉这种做法是超变态的,不过没有办法,只有请知道的告诉一声。多谢。请注意20列,只对20列操作,而且必须是LLXHH才替换。
替换前
1 1LXL XH1H  ...

只对20列操作...
这题目,特别是和9、10楼的要求结合起来很难理解,到现在还是不确定啥意思,答案倒是不少了。

论坛徽章:
0
45 [报告]
发表于 2006-11-30 03:19 |只看该作者
看了贵贴有种似曾相识的感觉,Wsgwz2004是不是做IC测试的,我感觉这些数据是用作测试IC的Timing数据,好像是VCD文件中的一部分。

我建议这种事情还使用Perl来得方便些,因为这些数据是有上下文关系的,如果我没有猜错这些数据的用途的话。


原帖由 wsgwz2004 于 2006-11-27 17:22 发表
大家好,我想对特定的列的特定内容进行替换,请知道的指点,个人感觉这种做法是超变态的,不过没有办法,只有请知道的告诉一声。多谢。请注意20列,只对20列操作,而且必须是LLXHH才替换。
替换前
1 1LXL XH1H  ...

论坛徽章:
0
44 [报告]
发表于 2006-11-30 03:03 |只看该作者

  1. perl -F""  -ane 'push @a,$F[20];END{$t=join "",@a;$t=~s/LLXHH/XXXXX/g;@a=split "",$t;open(FD,"$ARGV[0]");while(<FD>){s/(.{20})(.)/$1$a[$.-1]/;print}}'
复制代码

贴子人气不错我也来一个

[ 本帖最后由 lovesaka 于 2006-11-30 03:21 编辑 ]

论坛徽章:
0
43 [报告]
发表于 2006-11-29 11:05 |只看该作者
原帖由 flw 于 2006-11-28 15:38 发表

我觉得 sed 的那个最好懂。


呵呵
除了awk,sed和perl我就知道有这么个东西而已,而且awk也才刚开始学。

论坛徽章:
0
42 [报告]
发表于 2006-11-29 10:45 |只看该作者
原帖由 bill_zn 于 2006-11-29 10:00 发表
20楼的不是已经做出来了吗?
sed通常用于一行内的正则表达式的匹配、替换。这个问题用sed根本就做不出来。
必须用awk才能解决(当然,C、C++、JAVA等)也能解决。



25楼有sed版.

另外提示下: sed 可以处理多行模式匹配, 不过个人认为有时候比较复杂...用N可以把下一行读入pattern sapce.
allstar 该用户已被删除
41 [报告]
发表于 2006-11-29 10:25 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
40 [报告]
发表于 2006-11-29 10:00 |只看该作者
20楼的不是已经做出来了吗?
sed通常用于一行内的正则表达式的匹配、替换。这个问题用sed根本就做不出来。
必须用awk才能解决(当然,C、C++、JAVA等)也能解决。

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
39 [报告]
发表于 2006-11-28 17:53 |只看该作者
原帖由 sam_8286 于 2006-11-28 15:49 发表
拿到windows下,随便用哪个编辑器对列进行操作


请问具体操作步骤,不会是移动光标然后修改吧。
我这儿现成有一个3736711行的文件需要处理,也要对列进行处理,楼上给推荐一个Window$下的利器吧

论坛徽章:
0
38 [报告]
发表于 2006-11-28 15:49 |只看该作者
拿到windows下,随便用哪个编辑器对列进行操作
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP