2012-06-28 7 views
1

DCL로 파일의 텍스트를 검색하려면 어떻게합니까? 예, DCL을 사용해야합니다.DCL로 파일의 텍스트를 검색하는 방법

파일 형식은 정직 :

<NUMBER OF ENTRIES> 
<ID> <DIRECTORY> 
<ID> <DIRECTORY> 
. 
. 
. 
<ID> <DIRECTORY> 

그들은 몇 공백 문자로 구분하고 있습니다. 난 그냥 주어진 ID에 대한 파일을 검색하고 디렉토리를 추출해야합니다.

정말 간단한 작업이지만 어디서나 괜찮은 DCL 문서를 찾을 수 없습니다.

+1

는'도움말 SEARCH' 당신을 위해 아무것도 할 수 있습니까? '/ OUTPUT'을 사용하여 결과를 파일에 쓰고,'OPEN'과'READ'를 사용하십시오. 또는보다 안정적인 방법으로, 소스 파일'OPEN'과'READ'만으로 첫 줄을 건너 뛰고 각 줄을'ID'와'DIRECTORY'로 파싱합니다. 네가 끝나면 정중하고 '닫는다'. – HABO

+0

http://www.bing.com/search?q=dcl+vms+manual –

+0

@ user92546 IMHO 댓글이 답이 될 수 있습니다. –

답변

1
Edited.... the forum 'eats' strings like <xx> unless marked as code.  

데이터 라인에 뾰족한 괄호가 있습니까? 주십시오 진짜 예를 는 그것을 나 : XX XXX-DIRECTORY

내가 처음을 가정하고있다.

배송중인 VMS에는 레코드에서 필드를 선택하는 표준 도구가 없습니다. 그러나 이것을 수행 할 수있는 OpenVMS 용 표준 도구가 많이 있습니다.

$ gawk /comm="$1 == ""<xx>"" { print $2 }" tmp.tmp 
<xxx-DIRECTORY> 

또는

$ perl -ne "print $1 if /^\s*<xx>.*?<([^>]*)/" tmp.tmp 
xxx-DIRECTORY 

는 대소와 공간 - 감도 증대 될 수 있으며, 필요한 것을 트림과 같이 대부분 특히 (g) AWK와 PERL 는 그래서 내가 사용하는 것이 무엇 <>을 참조하십시오. 아마도 매개 변수가 될 수 있도록 검색 ID가 필요합니다. <이> 존재하지 않는 경우

어쨌든, 순수한 DCL 스크립트에서이 .... 같은

$ IF p2.eqs."" then exit 16 
$ CLOSE/NOLOG file 
$ OPEN/READ file 'p1 
$loop: 
$ READ/END=done file rec 
$ id = F$EDIT(F$ELEM(0,">",F$ELEM(1,"<",rec)), "UPCASE") 
$ IF id.NES.p2 THEN GOTO loop 
$ dir = F$ELEM(0,">",F$ELEM(2,"<",rec)) 
$ WRITE SYS$OUTPUT dir 
$ GOTO loop 
$done: 
$CLOSE/NOLOG file 

을 볼 수 있었다 ... 핵심에 대한

$ rec = F$EDIT(rec,"TRIM,COMPRESS") 
$ id = F$EDI(F$ELEM(0," ",rec),"UPCASE") 
$ IF id.NES.p2 THEN GOTO loop 
$ dir = F$ELEM(1," ",rec) 

그리고 이것을 사용 펄은 다음과 같습니다

$ perl -ne "print $1 if /^\s*<xx>\s+(\S+)/" tmp.tmp 

행운 하인

+1

뾰족한 괄호는 로그 파일에 포함되어 있지 않지만 올바른 트랙에 있습니다. 감사합니다! 앞으로는이 문제를 해결하기 위해 다음과 같이 검색 할 것입니다. F $ EDIT, F $ LENGTH, F $ EXTRACT, F $ LOCATE, F $ ELEM (F $ EDIT에는 제거에 도움이되는 몇 가지 인수가 있습니다. 공백 문자) – BobbyA

+0

필드를 추출하는 "하위 문자열"에 대한 Upvote. 이것이 OP가 요구 한 것입니다. 기록을 찾는 것은 필연적 인 결론이었습니다. – mckenzm

1

ID 필드가 고정 너비처럼 보이는 경우 파일을 RMS INDEXED (ID 필드에 입력)로 변환 할 수 있습니다. 그런 다음 READ/KEY='ID'을 호출하여 조회 만 할 수 있습니다. CONVERT에

통화 HELP는 KEY READ/KEY 아마도 검색은/

관련 문제