免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求助!两个文本之间字符匹配后局部段落替换的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-10-22 10:00 |只看该作者 |倒序浏览
本帖最后由 moto1717 于 2015-10-22 10:17 编辑

大家好,头一次发帖,请大家多指教。本人非专业编程人员,最近在研究sed,感觉很方便的工具,可以快速解决一些重复的工作。只是本人很难在深入研究,所以请教大家下面的问题:
现在有2个文件aaa.txt和bbb.txt。

aaa.txt的内容是:
HKFJ 210700Z 15002MPS 5000 BR NSC 10/09 Q1025 NOSIG
FKHJ 210700Z 07006MPS 9999 -RA SCT040 10/M00 Q1020 NOSIG

bbb.txt的内容是:
HKFJ::HKFJ 100030Z 09010MPS CAVOK 13/05 Q1027 NOSIG::HKFJ 092240Z 100009 33006G11MPS CAVOK BECMG 0506 33004MPS::292,009,07.5/312,021,03.3/324,028,-00.3/314,033,-04.6/295,035,-18.8/286,042,-31.3/286,052,-43.3/284,066,-50.9/279,081,-55.2/275,088,-55.7/272,076,-63.2<br>FKHJ::FKHJ 100000Z 16001MPS CAVOK 02/M01 Q1030 NOSIG::FKHJ 091935Z 100024 33004MPS CAVOK::351,007,07.2/347,007,01.7/335,016,01.1/326,026,-05.6/312,040,-18.5/308,044,-31.2/295,043,-44.5/287,051,-52.1/283,068,-57.5/278,075,-57.2/276,068,-63.0<br>
aaa文件都是单独成行,bbb文件都是混在一起的一行。

我的问题是能否用sed将aaa文件的每行匹配到bbb文件中相应的红色部分并替换呢?我用的是sed for windows版。谢谢各位。

论坛徽章:
0
2 [报告]
发表于 2015-10-22 11:13 |只看该作者
请高手帮帮忙

论坛徽章:
12
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00程序设计版块每日发帖之星
日期:2016-01-19 06:20:0015-16赛季CBA联赛之江苏
日期:2016-01-17 15:31:3915-16赛季CBA联赛之上海
日期:2016-01-16 15:44:3015-16赛季CBA联赛之浙江
日期:2016-01-15 20:38:1815-16赛季CBA联赛之北京
日期:2016-01-09 14:30:15CU十四周年纪念徽章
日期:2016-01-07 12:31:5115-16赛季CBA联赛之四川
日期:2016-01-01 11:49:1515-16赛季CBA联赛之深圳
日期:2015-12-24 14:23:4115-16赛季CBA联赛之山西
日期:2015-12-15 16:22:31技术图书徽章
日期:2015-12-10 17:41:0015-16赛季CBA联赛之北控
日期:2016-02-03 10:03:24
3 [报告]
发表于 2015-10-22 12:12 |只看该作者
说实话我没看懂 “将aaa文件的每行匹配到bbb文件中相应的红色部分并替换” 是需要干嘛。。
所以为了避免大家去猜,你不如把你想要的结果贴出来还直观些

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
4 [报告]
发表于 2015-10-22 12:31 来自手机 |只看该作者

3楼大神说的对啊,就是啊,,
aaa里没有字符和bbb文件相同啊

论坛徽章:
0
5 [报告]
发表于 2015-10-22 14:29 |只看该作者
回复 3# sync_1521

HKFJ::HKFJ 210700Z 15002MPS 5000 BR NSC 10/09 Q1025 NOSIG::HKFJ 092240Z 100009 33006G11MPS CAVOK BECMG 0506 33004MPS::292,009,07.5/312,021,03.3/324,028,-00.3/314,033,-04.6/295,035,-18.8/286,042,-31.3/286,052,-43.3/284,066,-50.9/279,081,-55.2/275,088,-55.7/272,076,-63.2<br>FKHJ::FKHJ 100000Z 16001MPS CAVOK 02/M01 Q1030 NOSIG::FKHJ 210700Z 07006MPS 9999 -RA SCT040 10/M00 Q1020 NOSIG::351,007,07.2/347,007,01.7/335,016,01.1/326,026,-05.6/312,040,-18.5/308,044,-31.2/295,043,-44.5/287,051,-52.1/283,068,-57.5/278,075,-57.2/276,068,-63.0<br>
   

感谢你回复,这就是我要的结果啊。就是aaa的HKFJ行替换bbb的红色部分,aaa的FKHJ行替换bbb的红色部分。

论坛徽章:
0
6 [报告]
发表于 2015-10-22 14:33 |只看该作者
回复 4# Windows19

感谢你的回复,我就是想通过与aaa里面的前4个字符匹配的比如HKFJ,然后把整行替换到bbb的相应位。,

   

论坛徽章:
12
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00程序设计版块每日发帖之星
日期:2016-01-19 06:20:0015-16赛季CBA联赛之江苏
日期:2016-01-17 15:31:3915-16赛季CBA联赛之上海
日期:2016-01-16 15:44:3015-16赛季CBA联赛之浙江
日期:2016-01-15 20:38:1815-16赛季CBA联赛之北京
日期:2016-01-09 14:30:15CU十四周年纪念徽章
日期:2016-01-07 12:31:5115-16赛季CBA联赛之四川
日期:2016-01-01 11:49:1515-16赛季CBA联赛之深圳
日期:2015-12-24 14:23:4115-16赛季CBA联赛之山西
日期:2015-12-15 16:22:31技术图书徽章
日期:2015-12-10 17:41:0015-16赛季CBA联赛之北控
日期:2016-02-03 10:03:24
7 [报告]
发表于 2015-10-22 16:02 |只看该作者
sed 的不会写  写了个awk的 你看行不行
test@sever:/tmp> cat 1
HKFJ 210700Z 15002MPS 5000 BR NSC 10/09 Q1025 NOSIG
FKHJ 210700Z 07006MPS 9999 -RA SCT040 10/M00 Q1020 NOSIG
test@sever:/tmp> cat 2
HKFJ::HKFJ 100030Z 09010MPS CAVOK 13/05 Q1027 NOSIG::HKFJ 092240Z 100009 33006G11MPS CAVOK BECMG 0506 33004MPS::292,009,07.5/312,021,03.3/324,028,-00.3/314,033,-04.6/295,035,-18.8/286,042,-31.3/286,052,-43.3/284,066,-50.9/279,081,-55.2/275,088,-55.7/272,076,-63.2<br>FKHJ::FKHJ 100000Z 16001MPS CAVOK 02/M01 Q1030 NOSIG::FKHJ 091935Z 100024 33004MPS CAVOK::351,007,07.2/347,007,01.7/335,016,01.1/326,026,-05.6/312,040,-18.5/308,044,-31.2/295,043,-44.5/287,051,-52.1/283,068,-57.5/278,075,-57.2/276,068,-63.0<br>

test@sever:/tmp> awk 'NR==FNR{a[$1,$NF]=$0;next}{for(i in a){split(i,b,SUBSEP);m=b[1]"[^:]*"b[2];n=a[i];gsub(m,n)}}1' 1 2
HKFJ::HKFJ 210700Z 15002MPS 5000 BR NSC 10/09 Q1025 NOSIG::HKFJ 092240Z 100009 33006G11MPS CAVOK BECMG 0506 33004MPS::292,009,07.5/312,021,03.3/324,028,-00.3/314,033,-04.6/295,035,-18.8/286,042,-31.3/286,052,-43.3/284,066,-50.9/279,081,-55.2/275,088,-55.7/272,076,-63.2<br>FKHJ::FKHJ 210700Z 07006MPS 9999 -RA SCT040 10/M00 Q1020 NOSIG::FKHJ 091935Z 100024 33004MPS CAVOK::351,007,07.2/347,007,01.7/335,016,01.1/326,026,-05.6/312,040,-18.5/308,044,-31.2/295,043,-44.5/287,051,-52.1/283,068,-57.5/278,075,-57.2/276,068,-63.0<br>
test@sever:/tmp>

论坛徽章:
0
8 [报告]
发表于 2015-10-22 18:41 |只看该作者
回复 7# sync_1521

非常感谢回头我试一下


   

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
9 [报告]
发表于 2015-10-22 18:55 |只看该作者
本帖最后由 yjh777 于 2015-10-22 18:55 编辑

while read tag c; do
    sed -ri "s;${tag}::${tag}(.*?)::${tag};${tag}::${tag} $c::${tag};" bbb.txt;
done <aaa.txt

论坛徽章:
22
处女座
日期:2014-10-11 13:33:292015亚冠之塔什干火车头
日期:2015-07-20 19:59:042015亚冠之塔什干火车头
日期:2015-07-26 10:59:31程序设计版块每日发帖之星
日期:2015-08-05 06:20:00每日论坛发贴之星
日期:2015-08-05 06:20:00程序设计版块每日发帖之星
日期:2015-08-07 06:20:00每日论坛发贴之星
日期:2015-08-07 06:20:002015亚冠之阿尔纳斯尔
日期:2015-10-01 15:23:28白银圣斗士
日期:2015-12-07 17:17:06操作系统版块每日发帖之星
日期:2015-12-27 06:20:002015亚冠之广州富力
日期:2015-07-08 15:48:31程序设计版块每日发帖之星
日期:2015-06-11 22:20:00
10 [报告]
发表于 2015-10-23 22:40 |只看该作者
awk 'NR==FNR{a[$1]=$0;next}{sub(/HKFJ::[^:]+NOSIG/,"HKFJ::"a["HKFJ"],$0);sub(/FKHJ::[^:]+NOSIG/,"FKHJ::"a["FKHJ"],$0);print $0}' a b
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP