zoukankan      html  css  js  c++  java
  • linux使用shell 进行文件数据的读取与排序

    题目

    shell脚本语言编写一个从键盘输入10名学生(含自己)的姓名、 性别、学号和家庭住址,然后按照学号排序,并将排序后的结果在屏幕上按对齐 的方式打印输出的程序。

    代码

    1. 读入数据
    2. 数据排序(这里用的选择排序)
    3. 数据输出
    #!/bin/bash
    
    declare -a username
    declare -a sex
    declare -a usercode
    declare -a userpath
    
    i=0
    
    # scan data from keyboard or pipe
    # cat ../test | while read line
    for line in `cat ../test`;
    do
        index=`expr $i / 4`
        pos=`expr $i % 4`
        if [ $pos -eq 0 ]
        then
            username[$index]=${line}
        elif [ $pos -eq 1 ]
        then
            sex[$index]=${line}
        elif [ $pos -eq 2 ]
        then
            usercode[$index]=${line}
        else
        userpath[$index]=${line}
        fi
        # echo $i, ${usercode[$i]}
        # echo ${username[$i]}, ${sex[$i]}, ${usercode[$i]}, ${userpath[$i]}
        i=$(($i+1))
    done
    
    arr=(0 1 2 3 4 5 6 7 8 9)
    
    i=0
    j=0
    
    # sort it with ascending
    while [ $i -lt 10 ]; do
        j=$(($i+1))
        while [ $j -lt 10 ] ; do
            # echo ${usercode[${arr[$j]}]} ,  ${usercode[${arr[$i]}]}
            if  [ ${usercode[${arr[$j]}]} -lt ${usercode[${arr[$i]}]} ]
            then
                tmp=${arr[$j]}
                arr[$j]=${arr[$i]}
                arr[$i]=$tmp
            fi
    
            j=$(($j+1))
        done
    
        i=$(($i+1))
    done
    
    # echo ${arr[@]}
    i=0
    while [ $i -lt 10 ]; do
        index=${arr[$i]}
        printf "%8s %6s %4s %10s
    " ${usercode[$index]}, ${username[$index]}, ${sex[$index]}, ${userpath[$index]}
        i=$(($i+1))
    done
    
  • 相关阅读:
    view如何被添加到window上并显示出来
    事件分发机制
    绘制机制
    setContentView
    消息机制——handler
    布局文件是如何被解析的?
    Xamarin.ios引用第三方SDK
    Xamarin.ios——First APP
    UITextView 文本垂直居中
    从NavigationController 下的UITableView中移除 header
  • 原文地址:https://www.cnblogs.com/Draymonder/p/11028412.html
Copyright © 2011-2022 走看看