일부 기능을 사용하여 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 문 전에 발생합니다.
  • 이 세 가지 gsub()작업을 축소하여 $4 앞에 공백이 00개 이상 있는 경우 필드 4의 10진수를 수정하고 ..

관련 정보