runawk 모듈 시스템을 impements 및 독립 AWK 프로그램을 작성하는 데 도움이 AWK 인터프리터 작은 래퍼입니다.
동기 부여
프로그래밍 AWK를 사용의 년 후에 내가 찾은에도 불구하고의
단순 및 제한 AWK는 다양한 스크립팅에 대한 충분
다른 작업의 범위. AWK는 더 큰만큼 poweful하지 않습니다
펄, 루비, TCL 등 같은 대응하지만 자신이있다
대부분의 소형화, 단순화 및 가용성 등의 이점
UNIX 계열 시스템. 나는 개인적으로 또한 데이터 중심의 성격을 좋아하고
토큰 방향, 간단한 텍스트 처리를위한 매우 유용한 기술
유틸리티.
그러나! 불행하게도 통역은 몇 가지 중요한 기능이 결여 awk가와
때로는 수 whould만큼 잘되지 작동합니다.
일부 문제는 내가 (물론 그 중 일부를,)를 참조하십시오.
1) AWK 모듈에 대한 지원이 부족하다. 나는 작은 프로그램을 만들 경우에도, I
종종 이전에 생성 기능을 사용하려면 이미 사용
다른 스크립트. 즉, 그것은으로 기능을 orginise하기 좋은 whould
그래서 라이브러리 (모듈)라고합니다.
2) # 인수를 전달하기 위해!는 / usr / 빈 / AWK -f 스크립트 (하지 AWK에
인터프리터), 그리스트를 할 필요가있다 prepand
(두 마이너스 signes) -와 인수. 내 관점에서,이 심하게 보인다.
예 :
awk_program :
& NBSP; & nbsp; & nbsp; 확인 #!는 / usr / 빈 / AWK -f
& NBSP; & nbsp; & nbsp; 확인 {BEGIN
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 대한 (I = 1; 난 ARGC를 <나는) {
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 printf의 "ARGV [% d 개] = % s의"난, ARGV [I]
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 }
& NBSP; & nbsp; & nbsp; 확인 }
셸 세션 :
& NBSP; & nbsp; & nbsp; 확인 % awk_program --opt1 --opt2
& NBSP; & nbsp; & nbsp; 확인 는 / usr / 빈 / AWK : 무시 알 수없는 옵션 --opt1
& NBSP; & nbsp; & nbsp; 확인 는 / usr / 빈 / AWK : 무시 알 수없는 옵션 --opt2
& NBSP; & nbsp; & nbsp; 확인 %의 awk_program - --opt1 --opt2
& NBSP; & nbsp; & nbsp; 확인 ARGV [1] = - OPT1
& NBSP; & nbsp; & nbsp; 확인 ARGV [2] = - OPT2
& NBSP; & nbsp; & nbsp; 확인 %
내 의견 awk_program에서 스크립트처럼 (같이 작동합니다
정상적인 프로그램 수행)
& NBSP; & nbsp; & nbsp; 확인 % awk_program --opt1 --opt2
& NBSP; & nbsp; & nbsp; 확인 ARGV [1] = - OPT1
& NBSP; & nbsp; & nbsp; 확인 ARGV [2] = - OPT2
& NBSP; & nbsp; & nbsp; 확인 %
그것은 runawk를 사용하여 가능하다.
3) #!는 / usr / 빈 / AWK -f 스크립트 인수 (옵션 처리) 및 원할 때
표준 입력에서 읽고, 그것을 추가 할 필요가있다
명시 적으로 마지막 인수로 -는 / dev / 표준 입력 ( '나`).
예 :
awk_program :
& NBSP; & nbsp; & nbsp; 확인 #!는 / usr / 빈 / AWK -f
& NBSP; & nbsp; & nbsp; 확인 {BEGIN
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 {(ARGV [1] "--flag"==) 경우
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 플래그 = 1
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 ARGV [1] = ""라는 이름의 파일을 읽을 수 # "--flag"
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 }
& NBSP; & nbsp; & nbsp; 확인 }
& NBSP; & nbsp; & nbsp; 확인 {
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 인쇄 "플래그 ="플래그 "$ 0 ="0달러
& NBSP; & nbsp; & nbsp; 확인 }
셸 세션 :
& NBSP; & nbsp; & nbsp; 확인 % 에코 테스트 | awk_program - --flag
& NBSP; & nbsp; & nbsp; 확인 % 에코 테스트 | awk_program - --flag는 / dev / 표준 입력
& NBSP; & nbsp; & nbsp; 확인 플래그 = 1 $ 0 = 테스트
& NBSP; & nbsp; & nbsp; 확인 %
이상적으로 awk_program과 같이 작동합니다
& NBSP; & nbsp; & nbsp; 확인 % 에코 테스트 | awk_program --flag
& NBSP; & nbsp; & nbsp; 확인 플래그 = 1 $ 0 = 테스트
& NBSP; & nbsp; & nbsp; 확인 %
이러한 모든 probles는 runawk 해결하고 나는 그것을 쓴 이유이다.
또한 아르 분포를 runawk 몇 모듈을 포함
나를 위해 유용하고 나도 당신을 위해 도움이 될 것입니다 바랍니다.
설치
0) BSD 메이크업이 필요합니다. 나는 그냥 '확인'의 이름을하지만 진짜 이름은 할 수있다
& NBSP; & NBSP; . & NBSP 변화; bmake 및 pmake 가능한 이름입니다.
& NBSP; & NBSP; 기본 구축 옵션을 변경해야하는 경우,
& NBSP; & NBSP; 이 같은 make를 실행
& NBSP; & NBSP; & nbsp; & nbsp; 확인 ENV [YOUR_ASSIGNMENTS] 확인 <대상>
& NBSP; & NBSP; 아래의 예 절을 참조하십시오
이 같은 다운로드 한 1) 압축을 타르볼
& NBSP; & NBSP; GZIP -dc runawk-X-Y-Z.tar.gz | 타르 -xf-
2) CD를 runawk-X-Y-Z
3) 확인
4) (선택!)를 설치-DIRS을
5) 설치 확인
시 변경 될 수 있습니다 메이크 많은 변수가있다
. 설치 및 NBSP; Runawk 자신의 변수는 (모든 그들의 시작에있다
메이크) :
& NBSP; PREFIX & NBSP; & NBSP; & NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 - runawk가 설치됩니다
& NBSP; MODULESDIR & NBSP; & NBSP; & nbsp; & nbsp; 확인 - 모듈에 설치되어있는 디렉토리
& NBSP; AWK_PROG & NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 - AWK 인터프리터 경로
& NBSP; STDIN_FILENAME - 경로 표준 입력 장치 파일에 대한
가장 일반적으로 사용되는 BSD 메이크업의 변수 (,
모든 다른 사람을 위해 -) 메이크업의 문서 및 .mk 파일을 볼 수
& NBSP는; BINDIR은 - 어디 자체가 설치되어있는 Makefile 내의 runawk
& NBSP; MANDIR - 매뉴얼 페이지는에 설치되는 위치
& NBSP; BINOWN은 - 실행 소유자를 runawk
& NBSP; BINGRP은 - 실행 그룹을 runawk
& NBSP; MANOWN - 매뉴얼 페이지 소유자
& NBSP; MANGRP - 남자 페이지 그룹
예 :
& NBSP; & NBSP; ENV의 CC = gcc가
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 PREFIX = / 가정 / cheusov / 지역
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 LDFLAGS = '- L은 / usr / 패키지 / lib에 -Wl, -rpath -Wl,은 / usr / 패키지 / lib에'
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 LDADD = -lextralib
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 CFLAGS = '- Werror -Wall'
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 CPPFLAGS = -I는 / usr / 패키지 / 포함
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 BINOWN = cheusov
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 BINGRP 사용자를 =
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 MANOWN = cheusov
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 MANGRP 사용자를 =
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 MKCATPAGES = 아니오
& NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 & NBSP; & nbsp; & nbsp; 확인 -s 모든 설치-dirs에 설치하게
이 릴리스의 새로운 기능입니다 : -I,
이 옵션 -i, 모든 긴 옵션이 완전히 제거 하였다.
-T 옵션은 탭 입력을 첨가 하였다.
옵션 -v는 매뉴얼 페이지에 설명되어 있습니다.
GCC 컴파일 경고를 수정.
비어 있지 않은 MAKEOBJDIR와 컴파일을위한 수정.
NEW, runcmd.awk 및 매뉴얼 페이지에 오타 수정.
이 버전 1.4.4의 새로운 기능 :
이 임시 디렉토리에 서브 디렉토리를 제거하는 버그가 수정되었습니다.
runawk_modules.3의 개선.
이 paexec (1) (3) 더 이상 임시 디렉토리를 제거하기위한 시스템을 사용하지 않는 :
이 버전 1.4.3의 새로운 기능입니다.
함수 print_help은 () init_getopt.awk하는 power_getopt.awk 모듈에서 이동되었습니다.
1.4.2 버전의 새로운 기능 :
는이 버전은 모든 모듈이 문서화되어 runawk_modules.3을 추가 긴 옵션을 대신 사용, -i 및 -I 옵션을 제거하고, 포함 배포 타르볼의 매뉴얼 페이지 그래서 pod2man는 구축이 필요하지 않습니다.
1.4.0 버전의 새로운 기능 :
이 exitnow.awk에서, exitnow (상태) 함수는 이제 경우에도 상태 == END 섹션을 실행하지 않고 스크립트의 실행을 종료 0.
기능 is_ {파일, DIR, 간부, 소켓, FIFO, blockdev, chardev, 심볼릭 링크}를 포함 io.awk 새 모듈, FILE_SIZE 및 FILE_TYPE. tokenre.awk 새로운 기능 splitre0이있다 ().
이 버전 1.3.2의 새로운 기능 :
이 내부 배열은 자동으로 이전됩니다. xargs를 runawk -e '...'|이 xargs를 (1), 예를 들어, 고양이 files.txt와 함께 runawk (1)의 사용을 해결합니다.
이 버전 1.3.0의 새로운 기능 :
이 인텔 C 컴파일러의 경고 메시지에 대한 수정.
모듈 / shquote.awk에서 함수 shquote ()에 대한 수정.
예, 모듈, runawk, alt_getopt 및 문서 (TODO, README 등 파일) : 프로젝트의 소스 코드는 따라서 모든 하위 프로젝트의 쉬운 설치를 허용, 재구성되었습니다.
1.1.0 버전의 새로운 기능 :
이 -F 옵션이 추가되었습니다.
새로운 ord.awwas는 ftrans_in.awk 및 glob.awk 모듈이 포함되었다.
새로운 alt_getopt 실행 파일은 쉘 스크립트에서 짧고 긴 옵션을 구문 분석에 포함되었다.
새로운 min3, min4, min5, min_key, MIN_VALUE 및 key_of_min_value (min.awk) 및 MAX3, MAX4, MAX5, max_key, MAX_VALUE 및 key_of_max_value (max.awk) 기능이 제공되었다.
새로운 샘플이 추가되었습니다 예 / demo_minmax, 예 / demo_tokenre3, 예 / demo_ftrans, 예 / demo_glob을 *.
새로운 기능은 multisub.awk에서 추가되었다.
마이너 개선 설치 과정에서 만들어졌다.
이 버전 0.16.0의 새로운 기능 :
이 가장 runawk 모듈의 데모 프로그램을 많이 만들고 그들이 지금 예 / 하위 디렉토리에있는되었다. 새로운 MEGA 모듈;-) 문서 및 데모 프로그램 예 / demo_power_getopt를 참조 power_getopt.awk. 정말 쉽게 처리 옵션을 사용할 수 있도록 해줍니다. 새로운 모듈 : embed_str.awk has_suffix.awk has_prefix.awk readfile.awk modinfo.awk 마이너 수정 및 dirname.awk 및 basename.awk 개선. 이제 그들은있는 dirname (1) 기본 이름과 완벽하게 호환 (1) RUNAWK 자식 AWK 하위 프로세스에 대한 다음과 같은 환경 변수를 설정 RUNAWK_MODC을 - AWK RUNAWK_MODV_에 전달 모듈의 수 (-f 파일 이름) - 전체 경로를 모듈 #N에 n은 [0..RUNAWK_MODC) 범위이다. 'AWK의 주장에 목록에 추가 된 -'추가 / 인공 경우 RUNAWK 1에 자식 AWK 하위 프로세스에 대한 RUNAWK_ART_STDIN 환경 변수를 설정합니다. 메이크 : bmake-주의가 제거되었습니다. 지금 메이크 FreeBSD의 메이크업과 완벽하게 호환됩니다. CLEANFILES 대상은 'test_all'대상에 손으로 만든 규칙 마이너 수정 대신 사용된다
댓글을 찾을 수 없습니다