2017-03-29 16 views
2

以前はコマンドプロンプト/ターミナルを使用していましたが、AWKの新機能です。IF文を使用しているときにAWK構文エラーが発生する

私は、以下のスクリプトを使用して、国コードと州コードに基づいてデータのサブセットを作成しています。しかし、私は構文エラーを取得します。 Cygwinのオン

BEGIN{ 
    FS = "\t" 
    OFS = "\t" 
    } 

# Subset data from the states you need for all years 
if ($5 == "IN-GA" || $5 == "IN-DD" || $5 == "IN-DN" || $5 == "IN-KA" || $5 == "IN-KL" || $5 == "IN-MH" || $5 == "IN-TN" || $5 == "IN-GJ"){ 
     if (substr($17, 1, 4) == "2000"){ 
      print $5, $12, $13, $14, $15, $16, $17, $22, $23, $24, $25, $26, $28 > "Y2000_India_sampling_output.txt" 
     } 
    } 

、私は、スクリプトを参照して、私は、コードの以下の行を実行すると、あなたはすぐに構文エラーを参照してください。

$ gawk -f sampling_India.awk sampling_relFeb-2017.txt 
gawk: sampling_India.awk:20: gawk if ($5 == "IN-GA" || $5 == "IN-DD" || $5 == "IN-DN" || $5 == "IN-KA" || $5 == "IN-KL" || $5 == "IN-MH" || $5 == "IN-TN" || $5 == "IN-GJ"){ 
gawk: sampling_India.awk:20:  ^syntax error 

任意の考え?

答えて

2

お客様のifの条件は{...}ブロックで囲まれていません。あなたは、単一の条件に複数の==条件を組み合わせることができますどのように正規表現を使用して

BEGIN { 
    FS = OFS = "\t" 
} 
# Subset data from the states you need for all years 
$5 ~ /^IN-(GA|DD|DN|KA|KL|MH|TN|GJ)$/ && substr($17, 1, 4) == "2000" { 
    print $5, $12, $13, $14, $15, $16, $17, $22, $23, $24, $25, $26, $28 > "Y2000_India_sampling_output.txt" 
} 

注:

はこのようにそれを持っています。

+1

ありがとう@anubhava。それは働く!気になります。もし私が2000年までにそれを部分集合にしたくないのであれば、 '&& substr($ 17,1,4)== "2000"'を取り除く - 私は関係する州に関係するすべてのデータを得るべきでしょうか?何年もの間、 –

+0

はい – anubhava

関連する問題