• 用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

  • 相关阅读:
    C#中小写人民币转大写
    Oracle中按规定的字符截取字符串
    Oracle中table数据数据类型
    Oracle中case的第二种用法
    javascript跳转页面
    C#添加二维码带加密带logo
    Oracle
    Oracle中with关键字的使用
    jquery
    插入排序,希尔排序原理,代码及复杂度分析
  • 原文地址:https://www.cnblogs.com/lkprof/p/4652433.html
Copyright © 2020-2023  润新知