我的 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
我的问题是这个脚本无法识别 '\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
我已经尝试了正则表达式与'*'、'+'等的各种组合,但我无法得到我想要的......
谁能告诉我有什么问题?