У меня есть список, соответствующий файлу. Эти файлы должны быть добавлены к одному файлу в зависимости от их порядка в списке.
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, но это может занять много времени. Есть ли эффективный способ справиться с этим?
Как насчет этого:
rm final.txt & cat order.list | tr '[:upper:]' '[:lower:]' | while read line; do cat $line.txt >> final.txt; done
Сначала удаляется существующий файл final.txt, затем файл order.list читается и преобразуется в нижний регистр (в соответствии с введенными вами данными), а затем добавляется в порядке чтения.
#!/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}