個別に機能するいくつかの機能があります。これを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の前に空白が0
0個以上ある場合は、フィールド4の10進数を修正してください.
。