добавить файлы на основе списка

У меня есть список, соответствующий файлу. Эти файлы должны быть добавлены к одному файлу в зависимости от их порядка в списке.

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

Используя приведенный выше order.list , я должен добавить файлы .txt , используя order utah.txt, затем florida.txt, затем 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

Кроме того из-за изменения порядка в списке, иногда order.list может содержать только две или одну строку.

Я мог бы попробовать оператор if, но это может занять много времени. Есть ли эффективный способ справиться с этим?

0
05.01.2017, 03:06
2 ответа

Как насчет этого:

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

Сначала удаляется существующий файл final.txt, затем файл order.list читается и преобразуется в нижний регистр (в соответствии с введенными вами данными), а затем добавляется в порядке чтения.

1
28.01.2020, 02:47
#!/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}
0
28.01.2020, 02:47

Теги

Похожие вопросы