파일에 해당하는 목록이 있습니다. 파일은 목록에 나타나는 순서에 따라 단일 파일에 추가되어야 합니다.
order.list:
FLORIDA #corresponding file is florida.txt
ILLINOIS #corresponding file is illinois.txt
UTAH #corresponding file is utah.txt
위의 방법을 사용하여 utah.txt, florida.txt,illinois.txt 순서로 파일을 첨부 order.list
해야 합니다..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 문을 사용해 볼 수도 있지만 시간이 오래 걸릴 수 있습니다. 이 문제를 처리하는 효율적인 방법이 있습니까?
답변1
이건 어때:
rm final.txt & cat order.list | tr '[:upper:]' '[:lower:]' | while read line; do cat $line.txt >> final.txt; done
먼저 기존 Final.txt를 삭제한 다음 order.list를 읽고 이를 소문자로 변환한 다음(제공한 입력에 따라) 읽기 순서에 추가합니다.
답변2
#!/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}