anexar arquivos com base em uma lista

0

Eu tenho uma lista que corresponde a um arquivo. Esses arquivos devem ser anexados a um único arquivo com base em sua ordem na lista.

  order.list:
  FLORIDA        #corresponding file is florida.txt
  ILLINOIS       #corresponding file is illinois.txt
  UTAH           #corresponding file is utah.txt

Usando o order.list acima, eu tenho que acrescentar os arquivos .txt usando a ordem utah.txt, seguido por florida.txt e illinois.txt

  scenario 1:
  order.list:
  UTAH
  FLORIDA
  ILLINOIS

  cat utah.txt >> final.txt
  cat florida.txt >> final.txt
  cat illinois.txt >> final.txt

  scenario 2:
  order.list:
  ILLINOIS
  UTAH

  cat illinois.txt >> final.txt
  cat utah.txt >> final.txt

Além da alteração da ordem da lista, às vezes, order.list pode conter apenas duas ou uma linha.

Eu poderia tentar uma declaração if, mas isso poderia demorar muito. Existe uma maneira eficiente de lidar com isso?

    
por sanjay33 05.01.2017 / 02:06

2 respostas

0
#!/bin/bash

INPUT_FILE=order.list
OUTPUT_FILE=final.txt
# Empty the output file
>${OUTPUT_FILE}

while read COUNTRY
do
        FILENAME=$(echo ${COUNTRY} | tr '[A-Z]' '[a-z]')
        cat ${FILENAME}.txt >> ${OUTPUT_FILE}
done < ${INPUT_FILE}
    
por 05.01.2017 / 02:16
1

Que tal isso:

rm final.txt & cat order.list | tr '[:upper:]' '[:lower:]' | while read line; do cat $line.txt >> final.txt; done

Primeiro, o final.txt existente é excluído, do que o order.list é lido e convertido em minúsculas (de acordo com a entrada que você forneceu) e, em seguida, anexado na ordem de leitura.

    
por 05.01.2017 / 02:16