Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2538566
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: LINUX

2017-10-18 11:32:27


点击(此处)折叠或打开

  1. #!/bin/bash

  2. #程序描述:进行多个文件, 列数据合并
  3. #作者: 程晓鹏
  4. #日期: 2017.10.17

  5. #例如
  6. #文件 1.txt内容如下(不含下面两行的‘#’字符)
  7. #private string id;
  8. #private String name;

  9. #文件 2.txt内容如下 (不含下面两行的‘#’字符)
  10. # //注释1
  11. # //注释2

  12. #使用命令 ./MergeFileColumn.sh 1.txt 2.txt
  13. #执行结果如下:
  14. #private string id; //注释1
  15. #private String name; //注释2

  16. #合并文件列
  17. #参数1:第一个文件,第一列
  18. #参数2:第二个文件,第二列
  19. #参数3:计算结果,文件路径
  20. function mergeFileColumn()
  21. {
  22.     v_file1=$1;
  23.     v_file2=$2;
  24.         v_out=$3;
  25.     awk 'BEGIN{OFS="";FS=""} NR==FNR{a[NR]=$0} NR>FNR{print a[FNR],$0}' $v_file1 $v_file2 > $v_out;
  26. }

  27. #创建临时文件
  28. #返回值:临时路径路径
  29. function createTmpFile
  30. {
  31.   
  32.    v_time=`date +%Y%m%d%H%M%S`; #系统时间
  33.    v_rand=$RANDOM; #随机数
  34.    v_file="/tmp/mergecolumn_tmpfile_${v_time}_${v_rand}";
  35.    echo $v_file;
  36. }

  37. #开始运行
  38. function run()
  39. {
  40.        v_tmp_file=$(createTmpFile); #临时结果文件路径
  41.        v_tmp_buffer="${v_tmp_file}_buffer"; #结果数据缓冲区,做数据缓冲转移功能
  42.        mergeFileColumn $1 $2 $v_tmp_buffer;
  43.        cat $v_tmp_buffer > $v_tmp_file;
  44.        shift;
  45.        shift;

  46.        while [ $# -gt 0 ];
  47.        do
  48.           mergeFileColumn $v_tmp_file $1 $v_tmp_buffer;
  49.           cat $v_tmp_buffer > $v_tmp_file;
  50.           shift;
  51.        done;

  52.        cat $v_tmp_file; #通过查看临时文件,输出结果
  53.        rm -rf $v_tmp_file; #删除临时文件
  54.        rm -rf $v_tmp_buffer; #删除临时缓冲区
  55. }

  56. if [ $# -eq 1 ]; then
  57.     cat $1;
  58. elif [ $# -gt 1 ]; then
  59.     run $*;
  60. else
  61.     echo "错误:文件列合并,入参必须传递文件路径.";
  62. fi;

阅读(4852) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~