Bash
基於列表附加文件
我有一個對應於文件的列表。這些文件必鬚根據它們在列表中的順序附加到單個文件中。
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.txtscenario 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 並將其轉換為小寫(根據您提供的輸入),然後附加到讀取的順序中。