zoukankan      html  css  js  c++  java
  • linux系统 如何提取奇数列

    1、遇到一个数据需要提取奇数列  

    [root@linuxprobe test]# cat test.txt
    c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30
    001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030
    031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060
    [root@linuxprobe test]# seq -f %03g 60 | xargs -n 30 > test.txt
    [root@linuxprobe test]# seq -f c%02g 30 | xargs |cat - test.txt > a && mv a test.txt
    [root@linuxprobe test]# cat test.txt
    c01 c02 c03 c04 c05 c06 c07 c08 c09 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30
    001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030
    031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060

     

    2、测试程序 ,生成过度文件tmp.txt (奇数列的转置文件)

    [root@linuxprobe test]# ls
    test.txt
    [root@linuxprobe test]# awk '{print NF}' test.txt | head -n 2  ##查看列数  
    30
    30
    [root@linuxprobe test]# for i in `seq 1 2 30`;do awk -v a=$i '{print $a }' test.txt|tr "\n" " "|sed 's/$/\n/' >> tmp.txt; done ###生成临时文件tmp.txt
    [root@linuxprobe test]# ls
    test.txt  tmp.txt
    [root@linuxprobe test]# cat tmp.txt  ##奇数列文件的转置文件
    c01 001 031
    c03 003 033
    c05 005 035
    c07 007 037
    c09 009 039
    c11 011 041
    c13 013 043
    c15 015 045
    c17 017 047
    c19 019 049
    c21 021 051
    c23 023 053
    c25 025 055
    c27 027 057
    c29 029 059

    3、对临时文件转置生成结果文件

    [root@linuxprobe test]# awk '{print NF}' tmp.txt | head -n 2 ##查看列数 
    3
    3
    [root@linuxprobe test]# for i in `seq 3`;do cut -d " " -f $i tmp.txt | tr "\n" " " | sed 's/$/\n/'  >> result.txt;done ##对临时文件转置,生成结果文件
    [root@linuxprobe test]# cat result.txt
    c01 c03 c05 c07 c09 c11 c13 c15 c17 c19 c21 c23 c25 c27 c29
    001 003 005 007 009 011 013 015 017 019 021 023 025 027 029
    031 033 035 037 039 041 043 045 047 049 051 053 055 057 059

     已经提取奇数列结果文件。

    程序慢,目前没找到更好的方法。

  • 相关阅读:
    java实现第七届蓝桥杯方格填数
    java实现第七届蓝桥杯方格填数
    Java实现第八届蓝桥杯正则问题
    Java实现第八届蓝桥杯正则问题
    手把手教你用Mysql-Cluster-7.5搭建数据库集群
    MySQL集群---②Windows平台搭建MySQL CLUSTER集群
    mysql集群搭建教程-基础篇
    Mysql多实例的配置和管理
    MySQL 使用mysqld_multi部署单机多实例详细过程
    [MySQL 5.1 体验]MySQL 实例管理器 mysqlmanager 初试
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/13759444.html
Copyright © 2011-2022 走看看