ファイルに対応するリストがあります。ファイルは、リストに表示される順序に従って単一のファイルに追加する必要があります。
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
2つの行のみを含めることも、1つの行のみを含めることもできます。
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}