免费注册 查看新帖 |

Chinaunix

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

求助 : awk 文本替换 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-13 15:22 |只看该作者 |倒序浏览
文本1内容: 1.txt

所属行业        菜系/服务项目        营业时间        停车位
100        114        1        1
200        201        2        1
300        306        1        3
300        314        1        3

文本2内容: 2.txt

"100"=>"餐饮"

"200"=>"娱乐"

"300"=>"便民"

文本3内容:3.txt

"101"=>"北京菜"

"102"=>"上海菜"

"103"=>"川菜"

"104"=>"江浙菜"

"105"=>"粤菜"

"106"=>"湘菜"

"107"=>"云南菜"

"108"=>"贵州菜"

"109"=>"东北菜"

"110"=>"西北菜"

文本4 内容:4.txt

"0"=>"不详",

"1"=>"日常营业",

"2"=>"午后营业",

"3"=>"夜店",

"4"=>"24小时营业"

文本5类似

把文本1 每一列数字替换成文本2,3,4,5的对应中文
求各种方法。 多多益善
首先表示感谢。

[ 本帖最后由 lxl0121 于 2009-4-13 15:23 编辑 ]

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
2 [报告]
发表于 2009-04-13 15:29 |只看该作者
二文件awk
本版很多的,

论坛徽章:
0
3 [报告]
发表于 2009-04-13 17:13 |只看该作者
sed -e 's/100/餐饮' ...

论坛徽章:
0
4 [报告]
发表于 2009-04-13 17:34 |只看该作者
原帖由 rhlei 于 2009-4-13 17:13 发表
sed -e 's/100/餐饮' ...

论坛徽章:
0
5 [报告]
发表于 2009-04-13 18:02 |只看该作者
  1. awk -F '[ \t]+|(=>)|"' 'NR==FNR{a[$2]=$5}NR>FNR{for (i=1;i<=NF;i++) if (FNR!=1&&a[$i]) sub($i,a[$i],$i);print}' <(cat 2.txt 3.txt 4.txt) 1.txt
复制代码

[ 本帖最后由 ywlscpl 于 2009-4-13 19:21 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-04-13 19:19 |只看该作者
2.txt 3.txt 4.txt 文件中的编号有可能是重复的,只能一个一个换了
awk -F '[ \t]+|(=>)|"' 'NR==FNR{a[$2]=$5}NR>FNR{if (FNR!=1&&a[$1]) sub($1,a[$1],$1);print}' 2.txt 1.txt>file1
awk -F '[ \t]+|(=>)|"' 'NR==FNR{a[$2]=$5}NR>FNR{if (FNR!=1&&a[$2]) sub($2,a[$2],$2);print}' 3.txt file1>file2
awk -F '[ \t]+|(=>)|"' 'NR==FNR{a[$2]=$5}NR>FNR{if (FNR!=1&&a[$3]) sub($3,a[$3],$3);print}' 4.txt file2>file3

论坛徽章:
0
7 [报告]
发表于 2009-04-13 21:56 |只看该作者
单行的处理,写的有点乱,灵活度也不高。


  1. [root@bj_manager testtxt]# awk -F'[ \t]+|"' '{if(ARGC<3) exit; if(FILENAME!=ARGV[ARGC-1]){a[FILENAME"_"$2]=$4;}else{for(i=1;i<=NF;i++) {if(a[i+1".txt_"$i]) printf(a[i+1".txt_"$i]"\t"); else printf($i"\t");} print ""}}' 2.txt 3.txt 4.txt 1.txt
  2. 所属行业        菜系/服务项目   营业时间        停车位
  3. 餐饮    114     日常营业        1
  4. 娱乐    201     午后营业        1
  5. 便民    306     日常营业        3
  6. 便民    314     日常营业        3
  7. [root@bj_manager testtxt]#
复制代码

论坛徽章:
0
8 [报告]
发表于 2009-04-13 22:19 |只看该作者

回复 #7 kwokcn 的帖子

赞~

论坛徽章:
0
9 [报告]
发表于 2009-04-14 07:56 |只看该作者

回复 #7 kwokcn 的帖子

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP