zoukankan      html  css  js  c++  java
  • Linux shell join命令详解

    Linux join命令

    2012-02-09 17:49:00| 分类: SHELL | 标签:linux join 文件连接 |字号 订阅
    join命令
    功能:“将两个文件里指定栏位同样的行连接起来”,即依照两个文件里共有的某一列,将相应的行拼接成一行。
    join [options] file1 file2
    注:这两个文件必须在已经在此列上是依照同样的规则进行了排序。
    join选项
    -a FILENUM:除了显示匹配好的行另外将指定序号(1或2)文件里部匹配的行显示出来
    -e EMPTY:将须要显示可是文件里不存在的域用此选项指定的字符取代
    -i :忽略大写和小写
    -j FIELD :等同于 -1 FIELD -2 FIELD,-j指定一个域作为匹配字段
    -o FORMAT:以指定格式输出
    -t CHAR :以指定字符作为输入输出的分隔符
    join 默认以空白字符做分隔符(空格和 ),能够使用 join -t $' '来指定使用tab做分隔符
    -v FILENUM:与-a相似 但值显示文件里没匹配上的行
    -1 FIELD:以file1中FIELD字段进行匹配
    -2 FIELD:以file2中FIELD字段进行匹配
    --help :打印命令帮助文件
    样例:
    文件 file1.txt
    aa 1 2
    bb 2 3
    cc 4 6
    dd 3 3
    文件file2.txt
    aa 2 1
    bb 8 2
    ff 2 4
    cc 4 4
    dd 5 5

    1.join file1.txt file2.txt
    输出:aa 1 2 2 1
    bb 2 3 8 2
    默认已两个文件的第一行做匹配字段,默认以空格(不限个数)做分隔符。
    2.join -j 1 file1.txt file2.txt
    输出:aa 1 2 2 1
    bb 2 3 8 9
    -j选项 指定了以两个文件里第一列做匹配字段 等同于join file1.txt file2.txt
    3. join -1 2 -2 3 file1.txt file2.txt
    输出: 1 aa 2 aa 2
    2 bb 3 bb 8
    4 cc 6 ff 2
    4 cc 6 cc 4
    以第一个文件的第二列和第二个文件的第三列做匹配字段。因为第二个文件里第三列的两个3 都与第一个文件里第三行因此输出
    4 cc 6 ff 2
    4 cc 6 cc 4
    4 join -o 1.1 -o 1.2 -o 1.3 -o 2.1 -o 2.2 -o 2.3 -e 'empty' -a 1 file1.txt file2.txt
    输出: aa 1 2 aa 2 1
    bb 2 3 bb 8 2
    cc 4 6 empty empty empty
    dd 3 3 empty empty empty
    -o 指定 将file1的1,2,3列,file2的1,2,3 列都输出。-a指定将file1中不匹配的行也输出,可是file2中沒有与file1后两行相应的字段,因此使用empty补齐。

    5.join -v 1 file1.txt file2.txt
    输出: cc 4 6
    dd 3 3
    -v 1 将file1中不匹配的行输出
    PS:join命令和数据库中的join命令很相似。
    尽管file1和file2都已经排序,可是因为在第三行时開始不匹配因此仅仅匹配上了前两行,后面的行尽管字段也能够相应可是以不能匹配。join命令,对文件格式的要求很强,假设想要更灵活的使用,可用AWK命令,參加AWK实例

    6. join 标准输入
    有时我们须要将多个格式同样的文件join到一起,而join接受的是两个文件的指令,此时我们能够使用管道和字符“-"来实现
    join file1 file2 | join - file3 | join - file4
    这样就能够将四个文件 连接到 一起了。

  • 相关阅读:
    OpenSSL EVP_Digest系列函数的一个样例
    简单的函数指针使用
    写入简单的日志log
    C实现日志等级控制
    散列表
    数据结构-链表
    关于线程的几个函数
    MySQL什么时候会使用内部临时表?
    linux如何处理多连接请求?
    Centos下搭建nginx反向代理
  • 原文地址:https://www.cnblogs.com/mfryf/p/3402200.html
Copyright © 2011-2022 走看看