旋转文件并根据以下列中的信息将第一列分配给不同的变量

时间:2017-04-13 09:29:54

标签: bash shell

关注输入文件:

 AEGUEUS SA 
 APOLLO 
 ARES 
 ARTEMIS MO TU WE TH FR 
 ATHENA MO TU WE TH FR 
 HADES MO TU WE TH FR 
 AGAFYA MO TU WE TH FR 
 HERMES MO TU WE TH FR 
 HESTIA MO TU WE TH FR 
 POSEIDON MO TU WE TH FR 
 ATLAS MO TU WE TH FR 
 AURA MO TU WE TH FR 
 EOS MO TU WE TH FR 
 UBON MO TU WE TH FR 
 PERSES MO TU WE TH FR 
 PALLAS MO TU WE TH FR 
 STYX 
 UDOM SA 
 LETO MO TU WE TH FR 
 SELENE MO TU WE TH FR 
 ASTERIA MO WE FR SU
 OCEANUS MO TU WE TH FR 
 CRONUS TU SU
 ACHILLES TU SU

我每个工作日都有一个变量,如果以下列与其中一个工作日匹配,则应将第一列添加到相应的变量中。

例如,应将AEGUS添加到SA。 APOLLO和ARES没有工作日,因此不会添加任何内容。 ARTEMIS应添加到MO TU WE TH FR,同样适用于ATHENA,HADES等......

所以我想到的就是"而读取线"循环到每一行的数组,然后是每个列的大小写匹配,并根据它填充变量。但我不知道如何正确地做到这一点。我已经陷入了while循环,这就是我想出来的,但我认为这是非常错误的。

while IFS=" " read -r line
do
    array=($line)
    for i in "${array[@]}"
    do
        case $i in
            MO)
            MO=()
            MO+=("${array[1]}")
            ;;
            TU)
            TU=()
            TU+=("${array[1]}")
            ;;
            WE)
            WE=()
            WE+=("${array[1]}")
            ;;
            TH)
            TH=()
            TH+=("${array[1]}")
            ;;
            FR)
            FR=()
            FR+=("${array[1]}")
            ;;
            SA)
            SA=()
            SA+=("${array[1]}")
            ;;
            SO)
            SO=()
            SO+=("${array[1]}")
            ;;
        esac
done < days.tmp

2 个答案:

答案 0 :(得分:0)

Sheet2

答案 1 :(得分:0)

你最好一次一天地搜索问题,这样就像:

Organization

在这里,我们每次都会花一天时间来搜索当天的文件(天)。然后通过awk解析输出,因为我们只关注第一列,并且新行被添加到名称中,以便我们可以通过map文件管道输出以创建与给定日期相关联的数组。