一部の機能を使用してawkファイルを作成する[閉じる]

一部の機能を使用してawkファイルを作成する[閉じる]

個別に機能するいくつかの機能があります。これをawkファイルに追加したいと思います。ただし、実行しようとするたびに構文エラーが返されます。

ディレクトリ2.awk

awk -F "-" '
BEGIN {
NR==1 {print $0}; 
NR==4 {print $0}};
/[0-9]/ && /N/ {print $1,$2,$3,$4,$5;};
{gsub(/ N0 ./," N0.")}1;
{gsub(/ .25 /,"0.25 ")}1;
{gsub(/ .50 /,"0.50 ")}1;
{gsub(/ .75 /,"0.75 ")}1;
END {print "FIM";}'

ファイルコード

000224123


                    -       316.0    -      316.00    -         .00   -  N0 .00E  -
                    -       323.0    -      323.00    -         .00   -  N0 .00E  -
                    -       350.0    -      350.00    -         .25   -  N44.00W  -
                    -       380.0    -      380.00    -         .25   -  N74.00E  -
                    -       410.0    -      410.00    -         .25   -  N15.00E  -
                    -       440.0    -      440.00    -         .25   -  N34.00E  -
                    -       470.0    -      470.00    -         .25   -  N54.00E  -
                    -       500.0    -      500.00    -         .25   -  N16.00E  -
                    -       530.0    -      530.00    -         .25   -  N07.00E  -
                    -       560.0    -      560.00    -         .25   -  N03.00W  -
                    -       590.0    -      590.00    -         .25   -  N09.00W  -
                    -       620.0    -      620.00    -         .50   -  N18.00W  -
                    -       650.0    -      649.99    -         .50   -  N19.00W  -
                    -       680.0    -      679.99    -         .50   -  N26.00W  -
                    -       710.0    -      709.99    -         .50   -  N13.00W  -
                    -       740.0    -      739.99    -         .75   -  N15.00W  -
                    -       770.0    -      769.99    -         .50   -  N02.00W  -
                    -       800.0    -      799.99    -         .75   -  N01.00W  -

答え1

以下は、必要なタスクを正確に実行できない場合がありますが、少なくとも実行され、必要な出力を得るための合理的な基盤である必要があります。

(提供していただいたサンプルデータが入力なのか出力なのか明確ではなくて、欲しいものが何なのかは言い難いです。入力だと仮定しています。)

awk -F "-" '
  NR==1 || NR==4 {print $0; next};

  /[0-9]/ && /N/ {
    gsub(/ N0 \./," N0.");

    gsub(/^ *\./,"0.",$4);

    print $1,$2,$3,$4,$5;
  }

  END {print "FIM";}'

重要な変更は次のとおりです。

  • BEGINブロックを削除してください。 1行と4行はそのまま印刷されます。このnextステートメントを参照してください。この行はもう処理できません。
  • 一致する行でのみ実行されるブロックにすべてのgsub()sとtheをグループ化します。print
  • 変換はgsub()print文の前に行われます。
  • この3つのgsub()タスクを折りたたみ、$ 4の前に空白が00個以上ある場合は、フィールド4の10進数を修正してください.

関連情報