由於利用Server跑Java來下載某網頁上的檔案,同時要檢查有哪些檔案是無法下載的,因此
寫了一支shell script來取得目前已有的檔名(檔案)來與log檔內的特定字串做比對,來分辨說
哪些編號的檔案沒下載到。
程式碼如下:
首先,切換到檔案下載放置的目錄
接著,過濾有字串.fastq的檔案,再來擷取以dot符號為分隔,取其field為1的字串
再來將這些字串名串接在變數download_str,名稱之間以一個空格為區間
之後,切換到另一個目錄
過濾一個檔案內以"HttpRequest Start"開頭的內容(一行一行看),以冒號符號為分隔,取其field
為2的字串
最後,將download_str變數去與取得的f變數做比對,比對的方式
$download_str != *$f*
假設$download_str => "ID123 ID456 ID789", f => "ID456"
由於比對型式為*$f*,因此不單單只是看f本身,而是只要有含f的字串就會成立!
如同SQL語法的column LIKE '%in%',就表示column有含in本身或Min或MinM都會符合!
PS. 在這邊要注意,假設f = "ID45"的話也會成立,因為download_str內"ID456"也包含它
因此,要注意此案例ID的長度最好是一致的,否則會有問題!
最後,會印出不包含f字串的內容囉!
寫了一支shell script來取得目前已有的檔名(檔案)來與log檔內的特定字串做比對,來分辨說
哪些編號的檔案沒下載到。
程式碼如下:
cd /home/download file/
download_str=""
for i in `ls | grep .fastq | cut -d . -f 1`
do
download_str="$download_str $i"
done
#echo $download_str
cd /home/ben
for f in `grep 'HttpRequest Start' ebi.log | cut -d : -f 2` ; do
if [[ $download_str != *$f* ]]; then
echo $f
fi
done
首先,切換到檔案下載放置的目錄
接著,過濾有字串.fastq的檔案,再來擷取以dot符號為分隔,取其field為1的字串
再來將這些字串名串接在變數download_str,名稱之間以一個空格為區間
之後,切換到另一個目錄
過濾一個檔案內以"HttpRequest Start"開頭的內容(一行一行看),以冒號符號為分隔,取其field
為2的字串
最後,將download_str變數去與取得的f變數做比對,比對的方式
$download_str != *$f*
假設$download_str => "ID123 ID456 ID789", f => "ID456"
由於比對型式為*$f*,因此不單單只是看f本身,而是只要有含f的字串就會成立!
如同SQL語法的column LIKE '%in%',就表示column有含in本身或Min或MinM都會符合!
PS. 在這邊要注意,假設f = "ID45"的話也會成立,因為download_str內"ID456"也包含它
因此,要注意此案例ID的長度最好是一致的,否則會有問題!
最後,會印出不包含f字串的內容囉!
留言
張貼留言