首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用DCL搜索文件中的文本

如何使用DCL搜索文件中的文本
EN

Stack Overflow用户
提问于 2012-06-28 08:14:49
回答 2查看 3.1K关注 0票数 1

如何使用DCL搜索文件中的文本?是的,我必须使用DCL。

文件格式简单明了:

代码语言:javascript
复制
<NUMBER OF ENTRIES>
<ID>  <DIRECTORY>
<ID>  <DIRECTORY>
.
.
.
<ID>  <DIRECTORY>

它们之间由几个空格字符分隔。我只需要在文件中搜索给定的ID并解压缩目录。

这是一项非常简单的任务,但是我似乎找不到任何像样的DCL文档。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-28 22:25:51

代码语言:javascript
复制
Edited.... the forum 'eats' strings like <xx> unless marked as code.    

数据线上是否有尖括号?请提供一个真实的例子,是它还是: XX XXX-DIRECTORY

我假设是第一个。

VMS在发布时没有从记录中选择字段的标准工具。但是对于OpenVMS来说,有很多标准的工具可以做到这一点。最值得注意的是(g)AWK和PERL,所以这就是我要使用的:

代码语言:javascript
复制
$ gawk /comm="$1 == ""<xx>"" { print $2 }" tmp.tmp
<xxx-DIRECTORY>

代码语言:javascript
复制
$ perl -ne "print $1 if /^\s*<xx>.*?<([^>]*)/" tmp.tmp
xxx-DIRECTORY

这些可以根据需要增加大小写和空格敏感度,并根据需要修剪<>。也许你需要搜索ID作为一个参数,或者不是。

无论如何,在一个纯DCL脚本中,它可能看起来像....

代码语言:javascript
复制
$ 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

如果<>不存在,请将其用于核心...

代码语言:javascript
复制
$ 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应该是:

代码语言:javascript
复制
$ perl -ne "print $1 if /^\s*<xx>\s+(\S+)/" tmp.tmp

祝你好运,海因

票数 1
EN

Stack Overflow用户

发布于 2012-10-12 07:18:37

或者,如果ID字段看起来像固定宽度,那么您可以将文件转换为RMS索引,键控ID字段。然后你就可以通过调用READ/KEY='ID'来进行查找了。

在转换时调用帮助,阅读/KEY,也许还可以搜索/KEY

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11236478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档