Bash

基於列表附加文件

  • January 5, 2017

我有一個對應於文件的列表。這些文件必鬚根據它們在列表中的順序附加到單個文件中。

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

使用order.list上述內容,我必須.txt使用 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 語句,但這可能需要很長時間。有沒有一種有效的方法來處理這個問題?

#!/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}

這個怎麼樣:

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

首先,刪除現有的 final.txt,然後讀取 order.list 並將其轉換為小寫(根據您提供的輸入),然後附加到讀取的順序中。

引用自:https://unix.stackexchange.com/questions/334939