我在OpenVMS中使用脚本非常困难 我在一个名为test.txt的文件中有一个输出。例如:
[WWEWE@http-lx-as code]$ cat test.txt
** Configuration for file "MULTINET:NETWORK_DEVICES.CONFIGURATION" **
Device Adapter CSR Address Flags/Vector
------ ------- ----------- ------------
se0 (Shared VAX/VMS Ethernet) -NONE- -NONE- -NONE-
s10 (Serial Line IP) -NONE- -NONE- -NONE-
dn0 (IP over DECNet link) -NONE- -NONE- -NONE-
我在Linux中编写了一个脚本,它有助于获取设备列下的所有信息,本例中为se0,s10,dn0。 我们可以在OPEN VMS中做类似的事吗
Linux脚本如下: 脚本:
for i in `cat test.txt 2>/dev/null |egrep '^[a-z]' |grep -v '\*\*' | awk '{print $1}'`
> do
> echo Begin-interface: $i
> done
输出:
Begin-interface: se0
Begin-interface: s10
Begin-interface: dn0
让我知道是否可以实现, 提前感谢你
答案 0 :(得分:2)
假设您在“ - ”开头的第一列中需要任何内容 您可以在命令文件中尝试以下操作,例如: extract_if.com
$ IF P1 .EQS. "" THEN GOTO nothing_specified
$ IF F$SEARCH( P1 ) .EQS. "" THEN GOTO file_not_found
$ parse_line = 0
$ OPEN/READ/ERROR=file_open_error infile 'P1'
$read_loop:
$ READ/ERROR=file_read_error/END_OF_FILE=end_of_file infile inline
$ IF F$LENGTH( F$EDIT( inline, "TRIM" ) ) .EQ. 0 THEN GOTO read_loop
$ IF parse_line .EQ. 1
$ THEN
$ interface = F$ELEMENT( 0, " ", F$EDIT( inline, "TRIM,COMPRESS" ) )
$ WRITE SYS$OUTPUT F$FAO( "Begin-interface: !AS", interface )
$ ELSE
$ parse_line = ( F$EXTRACT( 0,1,inline ) .EQS. "-" )
$ ENDIF
$ GOTO read_loop
$nothing_specified:
$ WRITE SYS$OUTPUT "No file specified"
$ GOTO finished
$file_not_found:
$ WRITE SYS$OUTPUT F$FAO( "File !AS not found", P1 )
$ GOTO finished
$file_open_error:
$ WRITE SYS$OUTPUT F$FAO( "Error opening file !AS", P1 )
$ GOTO finished
$file_read_error:
$ WRITE SYS$OUTPUT F$FAO( "Error reading from file !AS", P1 )
$ GOTO close_file
$end_of_file:
$close_file:
$ IF F$TRNLNM("infile").NES."" THEN CLOSE infile
$finished:
$ EXIT
使用以下命令运行此脚本:
$ @extract_if test.txt
输出应符合规定。
您似乎熟悉AWK。您也可以为OpenVMS安装GAWK。
答案 1 :(得分:1)
迟了两年......
$ gawk/comm="/^[a-z]/{print ""Begin-interface:"",$1}" test.tmp
Begin-interface: se0
Begin-interface: s10
Begin-interface: dn0
猜猜我永远不会理解那些认为他们需要4或5个管道命令的Unix脚本,然后是正确的工具并且只需一步完成所有操作。
将'cat'输出到awk或perl是最明显和令人讨厌的无知的标志。 好吧......好吧! 海因。