私の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を含むすべての単語を選択し、残りを拒否しています
/s の代わりに /([AZ])/ のような単純な正規表現は完全に機能しますが、{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
「*」、「+」などの正規表現のあらゆる種類の組み合わせを試しましたが、欲しいものが得られません...
誰が私に何が問題なのか教えてもらえますか?