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目录。我不知道在哪里包含这种循环机制。
答案 0 :(得分:0)
您编写的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