1
我有一個小腳本,只讀取文件的每一行,檢索id字段,運行實用程序獲取名稱並在末尾附加名稱。問題是輸入文件很大(2GB)。由於輸出與添加了10-30個char名稱的輸入相同,因此它具有相同的數量級。我怎樣才能優化它來讀取大型緩衝區,在緩衝區中進行處理,然後將緩衝區寫入文件,從而使文件訪問次數最小化?ksh腳本優化
#!/bin/ksh
while read line
do
id=`echo ${line}|cut -d',' -f 3`
NAME=$(id2name ${id} | cut -d':' -f 4)
if [[ $? -ne 0 ]]; then
NAME="ERROR"
echo "Error getting name from id2name for id: ${id}"
fi
echo "${line},\"${NAME}\"" >> ${MYFILE}
done < ${MYFILE}.csv
感謝
謝謝丹尼斯。 id2name根據id獲取用戶名,我無法控制該實用程序。但是,我希望擁有ID和相應的名稱,並在擊中數據庫之前執行本地查找。我嘗試排版-A,但它不被ksh識別。不幸的是,在SunOS上,ksh93不可用。有其他解決方案嗎?謝謝 – Kiran 2010-12-13 19:54:05
嗯,得到這條線的語法錯誤:IFS =:讀-r field1 field2 field3 NAME其餘<<< $(id2name $ id) 語法錯誤在第9行:'<'意外 它是<<而不是<<<或者是我的解釋器不好的版本? – Kiran 2010-12-13 20:01:12
@Kiran:看到我編輯的答案。 – 2010-12-13 21:11:25