[英]reading in a file in a loop and shell scripting
if [ ${FILESTATUS} = "GOOD" ] ; then
mv ${file} /export/home/goodFile
else
mv ${file} /export/home/badFile
fi
希望將上述內容集成到以下腳本中。 如果兩列都通過了驗證,則應將THAT FILE(.csv)移動到正確的文件目錄,否則應將其移動到壞文件中。 請幫助集成邏輯/循環
for file in /export/home/*.csv ; do
awk -F', ' '
# skip the header and blank lines
NR == 1 || NF == 0 {next}
# save the data
{ for (i=1; i<=NF; i++) data[++nr,i] = $i }
END {
status = "OK"
# verify column 1
for (lineno=1; lineno <= nr; lineno++) {
if (length(data[lineno,1]) == 0) {
status = "BAD"
break
}
}
printf "file: %s, verify column 1, status: %s\n", FILENAME, status
#verify coulmn 2
for(linenum = 1; linenum <nr; linenum++) {
if (length(dataArr[linenum,2]) == 0){
STATUS = "BAD"
break
}
if ((dataArr[linenum,2]) !~ /^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)[0-9][0-9]$/){
STATUS = "BAD"
break
}
}
# verify other columns ...
}
' "$file"
done
這個腳本應該從目錄中讀取大約10個左右的.csv文件。 但是,我希望此腳本集成以下內容如果文件成功通過驗證步驟,則轉到goodFile目錄,否則將轉到badfile目錄。 我不知道在哪里包括這種循環機制。
你寫的awk代碼中的任何地方STATUS = "BAD"
,用exit 1
替換它
然后,在for循環中,測試awk的退出狀態
for file in /export/home/*.csv ; do
awk -F', ' '....' "$file"
if [[ $? -eq 0 ]]; then
# "good" status
mv ${file} /export/home/goodFile
else
# "bad" status
mv ${file} /export/home/badFile
fi
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.