zoukankan      html  css  js  c++  java
  • 用Linux命令对两个文件进行连接操作

    数据库做两个表的连接操作很方便。如果不用数据库,用join命令也能做简单的连接操作。

    首先,看一下join命令的功能

      join命令

      功能说明:
      将两个文件中,指定栏位内容相同的行连接起来。
      语法:join [-i][-a<1|2>][-e<string>][-o<格式>] [-t<字符>][-v<1|2>][-1<栏位>][-2<栏位>][--help] [--version][文件1][文件2]
      补充说明:
      找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
      参数:
      -a <1|2> 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。
      -e <字符串> 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。
      -i或--igore-case 比较栏位内容时,忽略大小写的差异。
      -o <格式> 按照指定的格式来显示结果。
      -t <字符> 使用栏位的分隔字符。
      -v <1或2> 跟-a相同,但是只显示文件中没有相同栏位的行。
      -1 <栏位> 连接[文件1]指定的栏位。
      -2 <栏位> 连接[文件2]指定的栏位。
      --help 显示帮助。
      --version 显示版本信息。
      指定输出字段:
      -o <FILENO.FIELDNO> ...
      其中fileno=1表示第一个文件,fileno=2表示第二个文件,fieldno表示字段序号,从1开始编号。默认会全部输出,但关键字列只输出一次。
    比如:-o 1.1 1.2 2.2 表示输出第一个文件的第一个字段、第二个字段,第二个文件的第二个字段。

    实例分析

      join命令相当于sql中的内连接,但使用join命令前要求要连接的列是排好序的,所以未排序的文件可以先用sort命令排序。

      sort命令说明:

      选项与参数:
      -f  :忽略大小写的差异,例如 A 与 a 视为编码相同;
      -b  :忽略最前面的空格符部分;
      -M  :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
      -n  :使用『纯数字』进行排序(默认是以文字型态来排序的);
      -r  :反向排序;
      -u  :就是 uniq ,相同的数据中,仅出现一行代表;
      -t  :分隔符,默认是用 [tab] 键来分隔;
      -k  :以那个区间 (field) 来进行排序的意思

     文件a.csv为

      -1,          id_1000453,computer_os_type_203,computer_browser_version_1421,
      handle_92449,  id_1000455,computer_os_type_201,computer_browser_version_1574
      handle_62344,  id_1000456,computer_os_type_203,computer_browser_version_377
      handle_105086,  id_1000458,computer_os_type_228,computer_browser_version_875

      文件b.csv为

      handle_92449,  id_1000455,computer_os_type_201,computer_browser_version_1574
      handle_59483,  id_1000456,computer_os_type_203,computer_browser_version_377

      首先,对a.csv和b.csv排序

       $ sort -t , a.csv > a_sorted.csv

       $ sort -t , b.csv > b_sorted.csv

      对两文件连接

      $ join -t , a_sorted.csv b_sorted.csv > a_b_row1_join.csv

  • 相关阅读:
    二分法模板
    二分答案模板
    51nod 1010 只包含因子2 3 5的数
    三次握手和四次挥手(面试必问)
    TCP协议和UDP协议
    纯CSS3画出小黄人并实现动画效果
    正则表达式里字符串”不包含”匹配技巧
    12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!
    使用jTopo给Html5 Canva中绘制的元素添加鼠标事件_html5教程技巧
    程序猿们,快用Emoji表情写代码吧
  • 原文地址:https://www.cnblogs.com/lkprof/p/4652433.html
Copyright © 2011-2022 走看看