免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk 处理2个文件用不同的分隔符 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-23 17:06 |只看该作者 |倒序浏览
各位大侠,有两个文件 用awk处理, 比如第一个文件用“,” 截取$1 ,第二个用空格 截取$1,怎么实现呢?

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
2 [报告]
发表于 2013-12-23 17:15 |只看该作者
用split函数~

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2013-12-23 17:18 |只看该作者
回复 1# 梦落花香Z

There is a simple way for simple case

$ grep . F1 F2
F1:F1-1a,F1-1b,F1-1c,F1-1d
F1:F1-2a,F1-2b,F1-2c,F1-2d
F2:F2-1a F2-1b F2-1c F2-1d
F2:F2-2a F2-2b F2-2c F2-2d

$ awk -F'[, ]+' '{print $1}' F1 F2
F1-1a
F1-2a
F2-1a
F2-2a

   

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2013-12-23 19:01 |只看该作者
回复 1# 梦落花香Z
  1. awk '
  2. FILENAME=="file1"{FS="|"}        # 设置FS
  3. FILENAME=="file2"{FS="#"}       #设置FS
  4. FILENAME=="file3"{FS="@"}       #设置FS
  5. {$0=$0}                                    #使FS生效。
  6. {do your things}
  7. ' file1 file2 file3
复制代码

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
5 [报告]
发表于 2013-12-24 09:02 |只看该作者
回复 4# yinyuemi


    mark

论坛徽章:
0
6 [报告]
发表于 2013-12-24 11:23 |只看该作者
回复 3# jason680

非常好用,那个+ 实验有和没有都一样,能说下作用么?
   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
7 [报告]
发表于 2013-12-24 11:48 |只看该作者
回复 6# 梦落花香Z


the + have "more than one" function on Regular Express

$ echo "1    2 , 3,,4" | awk -F'[ ,]' '{for(n=0;n++<NF;)print n"=>"$n"<"}'
1=>1<
2=><
3=><
4=><
5=>2<
6=><
7=><
8=>3<
9=><
10=>4<

$ echo "1    2 , 3,,4" | awk -F'[ ,]+' '{for(n=0;n++<NF;)print n"=>"$n"<"}'
1=>1<
2=>2<
3=>3<
4=>4<

   

论坛徽章:
0
8 [报告]
发表于 2013-12-24 13:47 |只看该作者
回复 4# yinyuemi



[root@5_236_com test]# cat dns.txt
21cn                    A       119.254.88.33
96448                   A       124.42.9.133
adcggg                  A       117.79.237.33
[root@5_236_com test]# cat cbb.net
21cn.cbb.net.          3466    IN      A       119.254.88.33  
96448.cbb.net.         1807    IN      A       124.42.9.133   
adcggg.cbb.net.        1722    IN      A       117.79.237.33



awk  'NR==FNR{a[$1]=$0}NR>FNR{print $0,a[$1]}' dns.txt cbb.net
能把命令帮我写进去么,我怎么弄不成功呢。  
实现如下:
21cn.cbb.net.          3466    IN      A       119.254.88.33   21cn                    A       119.254.88.33
96448.cbb.net.         1807    IN      A       124.42.9.133    96448                   A       124.42.9.133
adcggg.cbb.net.        1722    IN      A       117.79.237.33   adcggg                  A       117.79.237.33




   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
9 [报告]
发表于 2013-12-24 14:01 |只看该作者
回复 8# 梦落花香Z

$ awk -F'[ .]+' 'NR==FNR{a[$1]=$0}NR>FNR{print $0,a[$1]}' dns.txt cbb.net
21cn.cbb.net.          3466    IN      A       119.254.88.33   21cn                    A       119.254.88.33
96448.cbb.net.         1807    IN      A       124.42.9.133    96448                   A       124.42.9.133
adcggg.cbb.net.        1722    IN      A       117.79.237.33  adcggg                  A       117.79.237.33

   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
10 [报告]
发表于 2013-12-24 14:06 |只看该作者
回复 8# 梦落花香Z
  1. [root@localhost ~]# awk 'NR==FNR{a[$1]=$0;next}{FS=".";$0=$0;print $0,a[$1]}' a b
  2. 21cn.cbb.net.          3466    IN      A       119.254.88.33   21cn                    A       119.254.88.33
  3. 96448.cbb.net.         1807    IN      A       124.42.9.133    96448                   A       124.42.9.133
  4. adcggg.cbb.net.        1722    IN      A       117.79.237.33 adcggg                  A       117.79.237.33
  5. [root@localhost ~]# head a b
  6. ==> a <==
  7. 21cn                    A       119.254.88.33
  8. 96448                   A       124.42.9.133
  9. adcggg                  A       117.79.237.33

  10. ==> b <==
  11. 21cn.cbb.net.          3466    IN      A       119.254.88.33
  12. 96448.cbb.net.         1807    IN      A       124.42.9.133
  13. adcggg.cbb.net.        1722    IN      A       117.79.237.33
  14. [root@localhost ~]#
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP