Мой файл данных CSV выглядит следующим образом
title,name,gender
MRS.,MADHU,Female
MRS.,RAJ KUMAR,male
MR.,N,Male
MRS.,SHASHI,Female
MRS.,ALKA,Female
Теперь, как вы можете видеть, я хочу избегать всех данных, таких как строки 2 и 3 (т.е. без пробелов или длины данных> = 3)
MRS.,RAJ KUMAR,male
MR.,N,Male
и поместите его в файл с именем rejected_list.csv, остальные - в файл с именем clean_list.csv
, следовательно, вот мой скрипт gawk для него
gawk -F ',' '{
if( $2 ~ /\S/ &&
$1 ~ /MRS.|MR.|MS.|MISS.|MASTER.|SMT.|DR.|BABY.|PROF./ &&
$3 ~ /M|F|Male|Female/)
print $1","$2","$3 > "clean_list.csv";
else
print $1","$2","$3 > "rejected_list.csv" } ' \
< DATA_file.csv
Myпроблема в том, что этот скрипт не распознает набор символов '\ S' (все алфавиты, кроме пробела) .. он выбирает все слова, начинающиеся с S или имеющие S, и отвергает остальные
простой регулярный выражение, подобное / ([AZ]) / вместо / s работает отлично, но, поскольку я устанавливаю ограничение {3,}, сценарий завершается ошибкой.
gawk -F ',' '{
if( $2 ~ /([A-Z]){3,}/ &&
$1 ~ /MRS.|MR.|MS.|MISS.|MASTER.|SMT.|DR.|BABY.|PROF./ &&
$3 ~ /M|F|Male|Female/)
print $1","$2","$3 > "clean_list.csv";
else
print $1","$2","$3 > "rejected_list.csv" } ' \
< DATA_file.csv
я пробовал все виды сочетания регулярного выражения с '*', '+' и т. д., но я не могу получить то, что хочу ...
Может кто-нибудь сказать мне, в чем проблема?