设为首页 收藏本站
查看: 862|回复: 0

[经验分享] Linux命令:jion

[复制链接]

尚未签到

发表于 2018-5-19 09:28:04 | 显示全部楼层 |阅读模式
  
jion命令简介:
    此命令是找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。像sql里 面的join工作方式。这里有两个文件f i l e 1和f i l e 2,当然已经分类。每个文件里都有一些元素与另一个文件相关。由于这种关系, join将两个文件连在一起,这有点像修改一个主文件,使之包含两个文件里的共同元素。


1.命令格式:
   join [options] PATTERN [FILE...]
   join [-i][-a<1或2>][-e<字符串>][-o<格式>][-t<字符>][-v<1或 2>][-1<栏位>][-2<栏位>][--help][--version][文件1][文件2]
       2.命令功能
     从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
   如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。



      3.主要参数
      -a<1或2>   除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。
        -e<字符串>   若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。
      -i或--igore-case   比较栏位内容时,忽略大小写的差异。
      -o<格式>   按照指定的格式来显示结果。
      -t<字符>   使用栏位的分隔字符。
      -v<1或2>   跟-a相同,但是只显示文件中没有相同栏位的行。
      -1<栏位>   连接[文件1]指定的栏位。
      -2<栏位>   连接[文件2]指定的栏位。
      --help   显示帮助。
      --version   显示版本信息。


  
4.命令实例:
  实例一:合并再输出
    [root@fox tmp]# cat 1.txt
     1 aaaaaaaa
     2 bbbbbbbb
     3 cccccccccc

    [root@fox tmp]# cat 2.txt
       1 1111111111
       2 2222222222

      [root@fox tmp]#$join 1.txt  2.txt
       1 aaaaaaaa 1111111111
     2 bbbbbbbb 2222222222

      [root@fox tmp]#$join 2.txt  1.txt
       1 1111111111 aaaaaaaa
     2 2222222222 bbbbbbbb

  

   实例二:合并再输出  

显示第一个文件不匹配的行
  $join -a1 file1 file2
  1 aaaaaaaa 1111111111
  2 bbbbbbbb 2222222222
  3 cccccccccc




  1 1111111111
  2 2222222222
  4 4444444444



向file2添加新内容如下

1 aaaaaaaa 1111111111
2 bbbbbbbb 2222222222
4 4444444444



  附:合并两个文件脚本如下:
  #!/bin/bash
#
# Script: merge_print.sh
# Author: CaoJiangfeng
# Date: 2010-09-25 11:38:57 AM
# Purpose: This script is used to merge two files in common
# Version: 1.0
##############################################################
################ Define some variables here ################
##############################################################
# Define some global variables
FILE1="file1"
FILE2="file2"
TARGET=tmp

  
################################################################

############### Define some functions here ###########
########################################################
function merge
{
cat /dev/null >$TARGET #Intialize a null file
while read line1
do   
  l1=`echo "$line1" |awk '{print $1}'`
  while read line2
  do
    l2=`echo "$line2" | awk '{print $1}'`
    if [ $l1 -eq $l2 ];
    then
      echo -n $line1>>$TARGET
      echo "$line2" | awk '{print " "$2}'>>$TARGET
    fi
  done<$FILE2
done <$FILE1

}

  
################################################################

################ Start of main ##############################
################################################################
merge
more $TARGET | sort -r # Print the result
# clean
rm -f $TARGET
exit 0

  

---END---

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-461900-1-1.html 上篇帖子: 《Linux菜鸟入门》认识linux系统 下篇帖子: linux rename用法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表