Мне было интересно, как я буду писать это в оболочке? Я хочу проверить поле в файле csv coulmn с помощью coulmn. Например только хочу, чтобы проверить, если номер coulmn один номерСкрипт оболочки для проверки столбца файла csv по столбцу
Number,Letter
1,u
2,h
3,d
4,j
выше
Loop - for all files (loop1)
loop from rows(2-n) (loop2) #skipping first row since its a header
validate column 1
validate column 2
...
end loop2
if(file pass validation)
copy to goodFile directory
else(
send to badFile directory
end loop1
То, что я здесь ниже строки с помощью проверки строк, какие изменения я должен был бы сделать это, как выше код psuedo, который у меня выше. Я ужасен в unix, только что начал узнавать об awk.
#!/bin/sh
for file in /source/*.csv
do
awk -F"," '{ # awk -F", " {'print$2'} to get the fields.
$date_regex = '~(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d~';
if (length($1) == "")
break
if (length($2) == "") && (length($2) > 30)
break
if (length($3) == "") && ($3 !~ /$date_regex/)
break
if (length($4) == "") && (($4 != "S") || ($4 != "E")
break
if (length($5) == "") && ((length($5) < 9 || (length($5) > 11)))
break
}' file
#whatever you need with "$file"
сделано
Есть некоторые особенности причина, это должно быть сделано как сценарий оболочки, а не в каком-то другом языке? Если вы лучше на python или perl или что-то, что вы могли бы написать в этом. – zstewart
должны выполнить это в оболочке грустно:/ –
Я не вижу, как эти типы операторов могут выполняться ... 'if (length ($ 5) ==" ") && ((length ($ 5) <9 .. . длина должна возвращать 0 или положительное число вправо? Да, '==" "' вероятно, будет true, когда lenth = 0, но тогда зачем тестировать, если 'length ($ 5) <9'? Также задание, подобное' $ date_regex = ... 'No' $ 'для имен переменных LHS для назначений. И почему' break', почему бы не 'printf (« ошибка в строке% s »для col # =% d, value =% s ', NR, 5, 5 долларов). Удачи. – shellter