任務驅動,有目標性的去研究,學習

任務驅動,有目標性的去研究,學習

    最近兩週都在搞一個工具的調研,其實這個工具系統已經運行了蠻長時間,一直處於維護和新需求添加階段,因此也經常出現一些bug 問題。主要考慮到性能方面的問題,於是我們就試着換一種方式去實現,看是否可行。 ESB ,多系統平臺之間的集成,想用來練練手,自己只是稍微瞭解瞭解了點,後來就被指派去研究:假設用 shell 腳本去執行我們目前系統的大部分功能,再用 java 去調用 shell 腳本,調用完成後再進行一些善後處理工作等。

 

    Linux知識,其實自己很去年就接觸了,也就是隻能進行簡單的一些操作。這次主要是爲了解決實際的問題而重新拾起 Linux 平臺。照着原先學習的比較,很快就再本機搭建去了一個虛擬的 Linux 平臺,利用 SecureCRT 軟件使 XP Linux 進行交互。由於目的性強,只有通過組合命令才能解決這複雜問題,首當其衝的就是學習 shell 腳本。腳本的編寫規範,格式等。由於自己以前也沒寫過 shell 腳本,自己就把複雜的任務儘量簡單化,步步分解,只有當前面的功能實現了,才進行繼續編寫,遇到不懂的,再找資料,測試,編寫小實現運行。其中有幾個地方比較印象深刻:有個同事是進行 Linux 平臺的項目上線,熟悉一些 Linux 命令,自己遇到幾個問題,想不出來,就去向他討教,幾個比較關鍵的地方在他的指引下一一被我解決啦。


 

以下是自己寫的shell 代碼,但是沒有將裏面的部分邏輯進行函數提煉(自己會優化處理和功能的完善)。

 

#!/bin/ksh

## 數據庫導出文件部分省略

................

orgin_file_name='dim_location_simple.csv'

dim_location_dic_name="dim_location_dic.csv"

#area_code=$1   

area_code=1-4-  

#area_code_index=$2

area_code_index=2

 

first_line=`head -n 1 $orgin_file_name`

#echo $first_line

 

#統計導出文件中每一行記錄的列數

file_field_num=`awk '{FS=","} END {print NF}' ${orgin_file_name}`

#echo ${file_field_num}

 

#統計 area_code 下屬地數量

area_code_count=`awk 'BEGIN {FS=","} ($1~/'${area_code}'/) {print NF}' ${dim_location_dic_name}`

#echo ${area_code_count}

 

index=1

while [ ${index} -le ${area_code_count} ]

do

 

    #當前屬地編碼

    current_area_code=`awk 'BEGIN {FS=","} ($1~/'${area_code}'/) {print $'${index}'}' ${dim_location_dic_name}`

    index=$((${index}+1))


#導出的屬地清單文件名稱

output_file_name="dim_location_${current_area_code}.csv"

output_zip_file_name="dim_location_${current_area_code}.zip"

#echo ${output_file_name}

#寫入字段標題

head -n 1 $orgin_file_name | awk 'BEGIN {FS=","} { i=1; for (i =1; i<NF; i++) {if(i != '${area_code_index}') printf $i"," } print $'${file_field_num}' }' > ${output_file_name}

#導出屬地化清單文件 ( 去除 AREA_CODE )

awk '{FS=","} ( $'${area_code_index}'~"'${current_area_code}'" ) { i=1; for (i =1; i<NF; i++) {if(i != '${area_code_index}') printf $i"," } print $'${file_field_num}' }' ${orgin_file_name} >> ${output_file_name}

    

#測試文件是否爲只有文件頭,若是則刪除

file_line_num=`wc -l ${output_file_name} | awk '{print $1}'`

##測試用 , 測試文件的行數

#file_line_num=`wc -l ${output_file_name}`

#echo ${file_line_num}

###


(test ${file_line_num} -le 1) && rm ${output_file_name}


##壓縮屬地化清單文件爲 zip 格式 , 刪除相應的 CSV 文件

if [ -e ${output_file_name} ]; then

   zip ${output_zip_file_name} ${output_file_name}

   #rm -f ${output_file_name}

fi

Done


 

其實,我寫這篇文章也是爲了記錄自己的一些思想觀念的轉變。任務再複雜,再困難,我們可以進行一步步分解,有目的性去查找資料,尋求幫助,結合自己的大膽的想法和不斷的嘗試,最終的結果可想而知啦。任務驅動學習,帶着問題去學習,不盲目,不盲從,靜心思考,不斷嘗試,追求完美。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章