免费注册 查看新帖 |

Chinaunix

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

文件内容的比较与替换问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-27 21:38 |只看该作者 |倒序浏览
现有A文件内容如下,域分割符为“:”
1:a
2:b
3:c
4:d
5:e
.
.
.

B文件的内容如下,域分割符为“:”
1:1
2:2
3:4
4:5
5:3
.
.
.

问题:比较B文件第一个域与第二个域的内容,如果第一域的内容与第二个域的内容不相等,(如:B文件的第三行3!=4),那么在A文件中找到第一域的内容等于3的行,并将A文件的第一个域的内容替换成B文件的第二个域的内容(即将A文件的第三行的3替换为4)。有点乱,不知道有没有说清楚。最终得到的A文件的内容如下:

1:a
2:b
4:c
5:d
3:e
.
.
.
请大家多多指教

论坛徽章:
1
2015年亚洲杯之韩国
日期:2015-04-24 09:07:02
2 [报告]
发表于 2008-11-27 21:58 |只看该作者

回复 #1 minix 的帖子

LZ 那两个文件的第一个域的值是相同的?有没有重复的呢

论坛徽章:
0
3 [报告]
发表于 2008-11-27 22:02 |只看该作者

回复 #2 biglazybug 的帖子

没有重复的

论坛徽章:
0
4 [报告]
发表于 2008-11-27 22:15 |只看该作者
你是不是要把两个文件的第二列合并起来?
paste <(cut -d: -f2 B) <(cut -d: -f2 A)|sed 's,\t,:,'

论坛徽章:
1
2015年亚洲杯之韩国
日期:2015-04-24 09:07:02
5 [报告]
发表于 2008-11-27 22:21 |只看该作者
awk -v OFS=":" -F ":" 'FNR==NR {if($1!=$2) a[$1]=$2} FNR<NR{$1=(a[$1]?a[$1]1);print }' B A

论坛徽章:
0
6 [报告]
发表于 2008-11-27 22:24 |只看该作者
原帖由 walkerxk 于 2008-11-27 22:15 发表
你是不是要把两个文件的第二列合并起来?
paste  


不是,先要判断A文件的1、2列,如果不等,在把A文件的第一列用B文件的第二列替换掉,A文件与B文件的行不一定相等,要经过判断才替换的,谢谢

论坛徽章:
0
7 [报告]
发表于 2008-11-27 22:29 |只看该作者
原帖由 biglazybug 于 2008-11-27 22:21 发表
awk -v OFS=":" -F ":" 'FNR==NR {if($1!=$2) a[$1]=$2} FNR


非常感谢biglazybug的支持,问题终于得到了解决,非常感谢!!

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
8 [报告]
发表于 2008-11-27 23:27 |只看该作者
原帖由 biglazybug 于 2008-11-27 22:21 发表
awk -v OFS=":" -F ":" 'FNR==NR {if($1!=$2) a[$1]=$2} FNR

$1=(a[$1]?a[$1]1; => if ($1 in a) $1=a[$1];

论坛徽章:
1
2015年亚洲杯之韩国
日期:2015-04-24 09:07:02
9 [报告]
发表于 2008-11-27 23:29 |只看该作者

回复 #8 ynchnluiti 的帖子

嘿嘿 andy大虾 我那么写会出现什么样的问题呢 请指教

论坛徽章:
0
10 [报告]
发表于 2008-11-27 23:44 |只看该作者

回复 #9 biglazybug 的帖子

一样的意思啊,呵呵,不过if ($1 in a) $1=a[$1]看上去更容易看懂,$1=(a[$1]?a[$1]1)这个我是想了下才弄明白的,小的才疏学浅啊,哈哈,学习ing
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP