Мне нужно проверить файл относительно типов данных. У меня есть файл с данными ниже,
data.csv
Col1 | Col2 | Col3 | Col4
100 | XYZ | 200 | 2020-07-11
200 | XYZ | 500 | 2020-07-10
300 | XYZ | 700 | 2020-07-09
У меня есть другой файл с конфигурациями,
Config_file.txt
Columns = Col1|Col2|Col3|Col4
Data_type = numeric|string|numeric|date
Delimiter = |
Мне нужно сравнить файл конфигурации и файл данных и вернуть результат.
Например: в файле конфигурации data_type для Col1 - numeri c. В случае, если я получу какое-либо строковое значение в столбце Col1 в файле данных, скрипт должен вернуть Datatype Mismatch Found in Col1
. Я пробовал с awk
, если это одна строка, это легко сделать, определив положение столбцов. Но я не уверен, как l oop весь файл, столбец за столбцом, проверять данные.
Я также попытался предоставить шаблоны и добиться этого. Но я не могу проверить полный файл. Было бы полезно любое предложение.
awk -F "|" '$1 ~ "^[+-]?[0-9]+([.][0-9]+)?$" && $4 ~ "^[+-]?[0-9]+([.][0-9]+)?$" && length($5) == 10 {print}' data.csv
Цель состоит в том, чтобы сравнить файл данных (data.csv) и Data_Type в файле конфигурации (Config_file.txt) для каждого столбца и проверить, есть ли в каком-либо столбце несоответствие типа данных .
Например, рассмотрим данные ниже
Col1 | Col2 | Col3 | Col4
100 | XYZ | 200 | 2020-07-11
ABC | XYZ | 500 | 2020-07-10 -- This is incorrect data because Col1 is having string value `ABC`, in config file, the data type is numeric
300 | XYZ | 700 | 2020-07-09
300 | XYZ | 700 | 2020-07-09
300 | XYZ | XYZ | 2020-07-09 -- Incorrect Data
300 | 300 | 700 | 2020-07-09
300 | XYZ | 700 | XYX -- Incorrect Data
Тип данных, представленный в таблице конфигурации, следующий:
Columns = Col1|Col2|Col3|Col4
Data_type = numeric|string|numeric|date
Сценарий должен отобразить результат как Data Type Mismatch Found in Col1